Java读取properties文件中文乱码问题的解决

Java直接读取properties文件时,中文会是乱码,这时可以用Java\jdk1.x.x\bin\native2ascii.exe工具。
例如,把f1.properties转换成f2.properties。



在cmd的当前目录下输入

Cmd代码
native2ascii -encoding gbk f1.properties f2.properties
native2ascii -encoding gbk f1.properties f2.properties
转换前f1.properties:


Properties代码
#编号=描述
cn=中国
#编号=描述  cn=中国
转换后f2.properties:


Properties代码
#\u7f16\u53f7=\u63cf\u8ff0
cn=\u4e2d\u56fd
#\u7f16\u53f7=\u63cf\u8ff0  cn=\u4e2d\u56fd
这样Java程序就可以正确识别中文了!

Java代码
Properties prop=new Properties();
InputStream inputStream=new FileInputStream("E:\\f2.properties");
prop.load(inputStream);
String title=prop.getProperty("cn");
System.out.println(title);
Properties prop=new Properties();         InputStream inputStream=new FileInputStream("E:\\f2.properties");         prop.load(inputStream);         String title=prop.getProperty("cn");      System.out.println(title); 
转换前运行结果:

控制台代码
???ú
???ú转换后运行结果:

控制台代码
中国
中国===============================================================================



native2ascii.exe 是 Java 的一个文件转码工具,是将特殊各异的内容 转为 用指定的编码标准文体形式统一的表现出来,它通常位于 JDK_home\bin 目录下,安装好 Java SE 后,可在命令行直接使用 native2ascii 命令进行转码,

示例: native2ascii -encoding 8859_1 c:\test.txt c:\temp.txt 将 test.txt 文件内容用 8859_1 转码,另存为 temp.txt

文件格式:native2ascii -[options] [inputfile [outputfile]]

参数选项 options -reverse:将 Latin-1 或 Unicode 编码转为本地编码 -encoding encoding_name:指定转换时使用的编码 inputfile:要转换的文件 outputfile:转换后的文件

互转(-encoding,非英文内容(如中文)转为编码符 或 编码符之间的转换)

逆转(-reverse,通常是将编码符转为非英文内容,或非英文内容之间的转换)

逆转时被转的文件编码和本地编码需一致:

示例: 中文转为 ISO 8859_1 编码后,将 8859_1 码转为中文:

native2ascii -encoding 8859_1 c:\a.txt c:\b.txt,

将 a 用 8859_1 转码,存为 b (8859_1 码)

native2ascii -encoding GBK c:\b.txt c:\c.txt,

将 b 用 GBK 转码,存为 c (GBK 码)

native2ascii -reverse c:\c.txt c:\d.txt,

将 GBK 编码 c 用本地编码转码,存为 d (中文内容) 中文转为 GBK 编码后,将 GBK 码转为中文:

native2ascii -encoding GBK c:\a.txt c:\b.txt,

将 a 用 GBK 转码,存为 b (GBK 码) native2ascii -reverse c:\b.txt c:\c.txt,

将 GBK 编码 b 用本地编码转码,存为 c (中文内容)

你可能感兴趣的:(java)