最近在做RCP应用的时候,需要生成文件,而使用编码为UTF-8。在eclipse中调试时,生成的文件的没有任何问题,将项目提交后,有小组成员提交报告说生成的字符集在UTF-8的编码集下显示为乱码。经过调试查看,发现编码集采用了GBK编码,遂不解。
通过查找文件生成的代码,定位如下:
- FileWriter fileWriter = new FileWriter(file);
- fileWriter.write(content);
怀疑问题出现在FileWriter中,通过查看FileWriter的编码。在RCP的应用中加上了调试的信息。
- FileWriter fileWriter = new FileWriter(file);
- MessageDialog.openInformation(null, "字符集编码", fileWriter.getEncoding());
发现在eclipse中调试时,显示为utf8,而将RCP应用打包后,再调试时,显示为GBK。
最后经过查询时得知,在FileWriter是根据默认的平台来使用字符的编码。
如果要使用UTF-8的编码,则可改用OutputStreamWriter。
将代码改成如下:
- OutputStreamWriter outputStream = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
- outputStream.write(content);
测试,OK!