java中语言国际化 – properties文件。问题描述:
在java中,如果想程序根据浏览器不同,进行国际化或者对一些敏感字符进行替换,需要用到peoperties文件,而前提工作是对这个文件进行相应的转码。在进行转码时,虽然有时转码成功,但结果其实并不是自己想要的。
如:
C:\Users\pansanday>native2ascii -encoding ansi d:\input.properties d:\sensitive.properties
java.io.UnsupportedEncodingException: ansi
没有ansi字符编码
C:\Users\pansanday>native2ascii -encoding 8859_1 d:\input.properties d:\sensitive.properties
虽转码成功,但是结果却是错误的
错在哪里呢?
错在了编码方式!
在用记事本写properties文件时,另存为时,发现默认的是ANSI格式,但是其实并不是,在中文操作系统中,它的格式是GBK
所以,正确的转码命令应是这样:
C:\Users\pansanday>native2ascii -encoding GBK d:\input.properties d:\sensitive.properties
再将这个properties文件拷贝到WEB-INF目录下面,进行相应的读取配置,就可以正常工作了
后续:
在编译的时候,可能会遇到以下错误:
Caused by: java.lang.IllegalArgumentException: Malformed \uxxxx encoding.
这可能是由复制粘贴造成的;最好的做法就是使用命令直接将input.properties转换为output.properties,然后将这个properties文件拷贝到相应路径