Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道
资源文件不仅仅需要保存英文信息 在很多时候 也需要保存其他的语言信息 如中文信息 但Java的属性文件只支持英文 要想在属性文件中保存中文 需要使用 uxxxx格式 但这非常不方便 因此 本文将分别介绍如何使用native ascii exe和Eclipse插件的方式来解决这个问题
一 使用native ascii命令使资源文件支持中文
从上篇文章中的ErrorDescription properties文件中可以看到所有的错误提示信息都是英文的 在客户端显示这些英文信息没有任何问题 但如果将这些英文错误提示信息改成相应的中错误提示信息又会如何呢?
在修改之前 先让我们选中ErrorDescription properties文件 单击右键 在右键菜单中选择「Properties」菜单项 打开属性设置对话框 在右侧所列的项目中选择「Resource」 看一下右下角的 Text file encoding 的编码格式 如果编码格式不是UTF 或GBK(也包括GB GB ) 请将编码格式修改为UTF 或GBK 否则无法使用MyEclipse的属性编辑器输入中文 在设置完属性文件的编码格式后 将ErrorDescription properties文件的内容按著该文件的英文版所示修改成中文提示信息
中文版的ErrorDescription properties
error user blank = 用户名不能为空 error password blank = 密码不能为空 nfirmation = 密码不匹配 error email blank = Email不能为空 error email invalid = 不是一个正确的email地址
重新启动Tomcat后 在IE中输入如下的URL
当出现信息输入界面后 点击 提交 按钮 将会显示如图 的效果
图
也许很多读者会感到奇怪 我们已经将属性文件的编码格式修改为UTF 或GBK了 而且所输入的中文在MyEclipse中也能正常显示 并且页面中的设置的编码格式也和属性文件中的编码格式一致 那么为什么会输出乱码呢?
产生这个问题的原因要从Java对各种类型的文件的处理方式上说起 Java在处理* java文件时 无论* java文件的编码格式是UTF 还是GBK 在使用javac exe编译时 都会将其转换成UCS 编码格式 因此 * java文件就不会出现乱码 而Java在处理属性文件时 只能处理ISO (也称为latin 或 西欧语言 )或UCS (\uxxxx格式)编码格式 因此 如果在属性文件中含有其他编码格式的字符 如GBK Java仍然会按著ISO 编码格式来解释这些字符(如果遇到以 u开头的字符 就会按著UCS 编码格式处理) 所以就会出现图 所示的显示效果
解决这个问题的方法也很简单 在JDK中提供了一个native ascii exe命令(在<JDK安装目录> bin目录中) 这个命令用来将属性文件中的非ISO 格式的字符转换成\uxxxx格式的UCS 编码格式 如按GBK编码的 用户 就会被转换成UCS 编码格式的 \u \u
我们可以使用如下的命令转换ErrorDescription properties文件的编码格式
<JDK安装目录>\bin\native ascii ErrorDescription properties ErrorDescription properties
使用上面的命令将覆盖旧的ErrorDescription properties文件 如果读者想保留旧的属性文件 可以将native ascii exe的第二个命令行参数换成其他的文件名 如下面命令所示
<JDK安装目录>\bin\native ascii ErrorDescription properties newDescription properties
下面的内容显示了ErrorDescription properties文件被转换了编码格式后的内容
被转换了编码格式后的ErrorDescription properties
error user blank = \u \u \u d\u e d\u fd\u e a\u a a error password blank = \u bc \u \u e d\u fd\u e a\u a a nfirmation = \u bc \u \u e d\u \u d error email blank = Email\u e d\u fd\u e a\u a aerror email invalid = \u e d\u f\u e \u e a\u b \u e\u email\u \u
按著上面所述的方式运行程序(需要重启Tomcat或重新发布samples程序 以便对属性文件的修改生效) 就会得到如图 所示的显示效果
二 使用Eclipse插件编辑属性文件
虽然上面的方法可以很好的解决Java属性文件的乱码问题 但是这种方式并不方便 因此 每次修改属性文件后 都要使用native ascii exe命令对被修改的属性文件进行编码转换 在本节将介绍两个专门用来编辑Java属性文件的Eclipse插件 通过使用这两个插件 可以无需使用native ascii exe命令就可以很好地处理非ISO 编码格式的字符
Properties Editor插件
这个插件可以从下载 它分为三个版本 独立运行的版本 JBuilder版本和Eclipse版本
这个插件在编辑属性文件时的方式和Eclipse内嵌的属性编辑器类似 在下载插件压缩包后 将其解压 将features和plugins两个目录复制到<MyEclipse安装目录> eclipse目录中即可 用Properties Editor插件编辑属性文件的界面如图 所示
JInto插件
这个插件可以从下载 它的基本功能和Properties Editor插件类似 只是以表格形式编辑属性文件 如图 所示
图
在使用上述两个插件编辑完ErrorDescription properties文件 并保存后 再使用Eclipse内嵌的属性编辑器打开这个文件(选中属性文件后 通过「Open With」选择相应的属性文件编辑器 如图 所示) 就会看到 uxxxx格式的内容
图
lishixinzhi/Article/program/Java/ky/201311/28551
2024-08-19 广告