来源:http://my.lintun.com/article/1718
昨天下午写代码,需要生成一个XML文件,以取代原来那种HTML的碎片方式。但是写出来的文件用浏览器打开后都是乱码。我已经在XML的最前面加上了
<?xml version="1.0" encoding="UTF-8"?>
而且浏览器的编码也是UTF-8的,这就排除了浏览器的问题。
再用VIM打开,发现用GB2312看是没问题的,换成:set encoding=UTF-8以后开始乱码
这时我尝试将字符串转码后写入文件,但在UTF-8,GBK和ISO8859_1中间怎么转也没有用。
忽然想起前几天yiyayoyo同学和我提过Java写文件默认编码的问题,于是开始google,发现我用的写文件的方式无法指定编码,于是换用另一种写文件的方式指定UTF-8,遂搞定。代码如下:
老代码:
PrintWriter pw = new PrintWriter(new FileWriter(path));
pw.print(content);
pw.close();
新代码:
FileOutputStream fos = new FileOutputStream(path);
Writer out = new OutputStreamWriter(fos, "UTF-8");
out.write(content);
out.close();
fos.close();
顺便抱怨一句,Java中写文件的方式还真是多阿多……我等一两年经验的小程序员看了都眼晕
本文分享了一次解决使用Java生成XML文件时出现乱码的经历。作者最初尝试多种编码转换方式未能成功,最终通过更改文件输出流的编码设置解决了问题。
353

被折叠的 条评论
为什么被折叠?



