ResourceBundle中的中文乱码问题

来源:互联网 发布:黑马程序员官方网站 编辑:程序博客网 时间:2024/06/01 10:47

在Java中,处理中文乱码一直是一个头疼的问题。这个问题的是由于区域设置和字符集引起的,具体这里不深究。我们都知道,在Java中,默认是使用latin1(iso8859-1)字符集的。我们处理中文的方式经常是这样:

以从数据库中读取中文为例:

String sName=getName();
String sName_cn
=new String(sName.getBytes("ISO8859-1"),"GB2312");

通过这种方式,中文就可以正常显示了。

但是,在很多使用Resource资源文件的情况下,如Struts,spring等框架中,通过ResourceBundle的方式从资源文件(如messages.properties)中自动读取并进行资源绑定。这时,如何解决中文乱码问题呢?

其实,很简单,只要通过将中文写成Unicode就可以了!比如,

hello=你好

用unicode来写就是

hello=/u4f60/u597d

在JDK/BIN目录中,提供了一个简单的转换工具:native2ascii.exe,可以把非Latin1和非Unicode的本地编码文件转换成Unicode编码的文件。其具体说明可以查阅JDK文档。这里给出简单的使用方法示例:

native2ascii.exe messages.properties messages.txt

然后用messages.txt文件的内容替换messages.properties文件就可以了。

现在,中文资源文件可以正常使用了!