ResourceBundle中的中文乱码问题

本文介绍了在Java中处理中文乱码的方法,特别是针对资源文件(如messages.properties)中出现的乱码问题。通过使用JDK自带的native2ascii工具将中文转换为Unicode编码,可以有效地解决Struts和Spring等框架中的资源绑定时遇到的乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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文件就可以了。

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值