转到正文

浪淘沙

静观己心,厚积薄发

存档

标签: 乱码

在中文操作系统下,Properties资源文件的编码的默认设置是ISO-8859-1。所以编辑Java文件中的中文不会出现问题,但编辑Properties资源文件中的中文会出现问题。为了防止中文乱码,我们可以这样做:

如你代码里写的,你可以在String username=property.getProperty(“username”);之后,添加JAVA代码页可以将乱码转为中文的。用如下语句就可以了,resultName=new String(username.getBytes(“ISO-8859-1”),“gbk”); 然后再用resultName就可以了,不过这样的话你下面的String password=property.getProperty(“password”);

其中红色的编码为 properties文件的编码格式。

比如:

我setting.properties文件 其文件编码为 UTF-8 ,setting.properties的内容如下:

#setting
#Mon Mar 11 17:34:46 CST 2013
configBaseDir=D\:\\www\\flowershop-dev\\flowershop_us-dev\\Configuration Settings
outputDirectory=D\:\\www\\flowershop-stag\\europe\\dutch\\staging\\vrelease\\testing\\app\\configs
test=D\:\\桌面\\1月22号全部翻译\\1月22号全部翻译

因为test这个properties包含中文。如果不进行处理的话,会出现乱码。我的处理方式为:


String configBaseDir = new String(prop.getProperty("configBaseDir").getBytes("ISO-8859-1"), "UTF-8"); //ISO-8859-1 为读取properties的默认编码  UTF-8为properties文件的真正编码

有的人提出用JDK自带的native2ascii进行编码转换。这个没有自己试验。

参考:

http://codinglu.blog.163.com/blog/static/27823969201111985820609/

http://hi.baidu.com/flymz/item/cc1cc3c8a10650340931c645

http://zhidao.baidu.com/question/154062493.html

 

造成乱码的原因是因为编码和解码不一致导致的结果。想要不出现编码,需要做到以下几点:

1、文件的编码

2、浏览器默认的编码方式

3、html meta标签 Content-Type 设置的编码方式

只要办证以上3个都一致,就不会出现乱码问题。

前两天我又学到了一招: 如果文件又包含了其他文件(比如css,js,小功能模块文件),那么也需要这些文件也

必须文件编码已知,否则,在某些浏览器下面就会出现部分乱码的情况。
依次为记。。