在Java中写文件的中文问题[转]-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

在Java中写文件的中文问题[转]

简介:

写出来的文件用浏览器打开后都是乱码。已经在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中写文件的方式还真是多阿多……我等一两年经验的小程序员看了都眼晕

   库卡 说:
  读代码也有编码的问题,如果要读取UTF-8的文件,应采用如下方式覆盖默认编码:
  FileInputStream fis = new FileInputStream(s);
  StringBuffer content = new StringBuffer();
  DataInputStream in = new DataInputStream(fis);
  BufferedReader d = new BufferedReader(new InputStreamReader(in, "UTF-8"));
  String line = null;
   while ((line = d.readLine()) != null)
                      content.append(line + "\n");
  d.close();
  in.close();
  fis.close();

本文转自博客园执着的笨蛋的博客,原文链接:在Java中写文件的中文问题[转],如需转载请自行联系原博主。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章