黑马程序员技术交流社区
标题:
怎么解决Properties操作获取中文乱码问题。。
[打印本页]
作者:
杨浩
时间:
2013-1-31 18:33
标题:
怎么解决Properties操作获取中文乱码问题。。
本帖最后由 杨浩 于 2013-1-31 21:40 编辑
public class Demo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("<span class="string"><font color="#0000ff">prop.properties</font></span>");
Properties prop = new Properties();
prop.load(fis);
System.out.println(prop.getProperty("1"));
}
}
复制代码
prop.properties文件里内容是
1 = 测试代码
-----------------------------------------------
问题解决了。上面我搞的时候,是只用记事本写了内容然后保存的文件。。。忽略了一些事情
因为load和store方法都是按照ISO-8859-1的编码方式读写属性流文件的,而ILatin1 的字符和某些特殊字符,而对于非Latin1 的字符和某些特殊字符,则要使用与字符和字符串字面值所用的类似转义序列,以值和元素的形式来表示它们。所以当我们在处理中文时,不可以在直接修改属性文件时,将中文的值赋予给属性,而是要在JAVA程序中通过setProperty方法给属性赋予中文的值,因为这样store会将中文转换成 unicode码,在读取时系统会将读取到的unicode码按系统的编码打印出来,对于中文系统,通常是GBK码,这样中文才能够正常显示。
作者:
杨杨
时间:
2013-1-31 19:30
在eclipse或者meyeclipse编辑 不会出现 ,用其他工具的时候注意文件的保存编码 utf-8 gbk 要统一 一般系统默认是gbk
作者:
杨浩
时间:
2013-1-31 21:32
杨杨 发表于 2013-1-31 19:30
在eclipse或者meyeclipse编辑 不会出现 ,用其他工具的时候注意文件的保存编码 utf-8 gbk 要统一 一般系统 ...
在eclipse里面创建properties,记事本打开看到是unicode编码方式的十六进制。。
如果外部直接记事本编辑的不行,这是因为properties的getProperty方法,内部自动进行了编码转换吧。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2