黑马程序员技术交流社区

标题: 怎么解决Properties操作获取中文乱码问题。。 [打印本页]

作者: 杨浩    时间: 2013-1-31 18:33
标题: 怎么解决Properties操作获取中文乱码问题。。
本帖最后由 杨浩 于 2013-1-31 21:40 编辑
  1. public class Demo {
  2.         public static void main(String[] args) throws IOException {
  3.                 FileInputStream fis = new FileInputStream("<span class="string"><font color="#0000ff">prop.properties</font></span>");
  4.                 Properties prop = new Properties();
  5.                 prop.load(fis);
  6.                 System.out.println(prop.getProperty("1"));
  7.         }
  8. }
复制代码
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