资源文件不仅仅需要保存英文信息,在很多时候,也需要保存其他的语言信息,如中文信息。但
Java
的属性文件只支持英文,要想在属性文件中保存中文,需要使用
"uxxxx
格式,但这非常不方便,因此,本文将分别介绍如何使用
native2ascii.exe
和
Eclipse
插件的方式来解决这个问题。
一、使用
native2ascii
命令使资源文件支持中文
从上篇文章中的ErrorDescription.properties 文件中可以看到所有的错误提示信息都是英文的。在客户端显示这些英文信息没有任何问题。但如果将这些英文错误提示信息改成相应的中错误提示信息又会如何呢?
在修改之前,先让我们选中ErrorDescription.properties 文件,单击右键,在右键菜单中选择【Properties 】菜单项,打开属性设置对话框,在右侧所列的项目中选择【Resource 】。看一下右下角的“Text file encoding ”的编码格式,如果编码格式不是UTF-8 或GBK (也包括GB2312 、GB18030 ),请将编码格式修改为UTF-8 或GBK ,否则无法使用MyEclipse 的属性编辑器输入中文。在设置完属性文件的编码格式后,将ErrorDescription.properties 文件的内容按着该文件的英文版所示修改成中文提示信息。
中文版的 ErrorDescription.properties
从上篇文章中的ErrorDescription.properties 文件中可以看到所有的错误提示信息都是英文的。在客户端显示这些英文信息没有任何问题。但如果将这些英文错误提示信息改成相应的中错误提示信息又会如何呢?
在修改之前,先让我们选中ErrorDescription.properties 文件,单击右键,在右键菜单中选择【Properties 】菜单项,打开属性设置对话框,在右侧所列的项目中选择【Resource 】。看一下右下角的“Text file encoding ”的编码格式,如果编码格式不是UTF-8 或GBK (也包括GB2312 、GB18030 ),请将编码格式修改为UTF-8 或GBK ,否则无法使用MyEclipse 的属性编辑器输入中文。在设置完属性文件的编码格式后,将ErrorDescription.properties 文件的内容按着该文件的英文版所示修改成中文提示信息。
中文版的 ErrorDescription.properties
error.user.blank
=
用户名不能为空.
error.password.blank = 密码不能为空.
error.password1.confirmation = 密码不匹配.
error.email.blank = Email不能为空
error.email.invalid = 不是一个正确的email地址
error.password.blank = 密码不能为空.
error.password1.confirmation = 密码不匹配.
error.email.blank = Email不能为空
error.email.invalid = 不是一个正确的email地址
当出现信息输入界面后,点击“提交”按钮,将会显示如图1
的效果。
图1
使用上面的命令将覆盖旧的ErrorDescription.properties 文件,如果读者想保留旧的属性文件,可以将native2ascii.exe 的第二个命令行参数换成其他的文件名,如下面命令所示:
<JDK 安装目录 >\bin\native2ascii ErrorDescription.properties newDescription.properties
图1
也许很多读者会感到奇怪。我们已经将属性文件的编码格式修改为UTF-8
或GBK
了,而且所输入的中文在MyEclipse
中也能正常显示,并且页面中的设置的编码格式也和属性文件中的编码格式一致,那么为什么会输出乱码呢?
产生这个问题的原因要从Java 对各种类型的文件的处理方式上说起。Java 在处理*.java 文件时,无论*.java 文件的编码格式是UTF-8 还是GBK 。在使用javac.exe 编译时,都会将其转换成UCS-2 编码格式。因此,*.java 文件就不会出现乱码。而Java 在处理属性文件时,只能处理ISO 8859-1( 也称为latin-1 或“西欧语言”) 或UCS-2 (\uxxxx 格式)编码格式。因此,如果在属性文件中含有其他编码格式的字符,如GBK ,Java 仍然会按着ISO 8859-1 编码格式来解释这些字符(如果遇到以"u 开头的字符,就会按着UCS-2 编码格式处理),所以就会出现图1 所示的显示效果。
解决这个问题的方法也很简单,在JDK 中提供了一个native2ascii.exe 命令(在<JDK 安装目录>"bin 目录中),这个命令用来将属性文件中的非ISO 8859-1 格式的字符转换成\uxxxx 格式的UCS-2 编码格式。如按GBK 编码的“用户”就会被转换成UCS-2 编码格式的“\u7528\u6237 ”。
我们可以使用如下的命令转换ErrorDescription.properties 文件的编码格式:
<JDK 安装目录 >\bin\native2ascii ErrorDescription.properties ErrorDescription.properties
产生这个问题的原因要从Java 对各种类型的文件的处理方式上说起。Java 在处理*.java 文件时,无论*.java 文件的编码格式是UTF-8 还是GBK 。在使用javac.exe 编译时,都会将其转换成UCS-2 编码格式。因此,*.java 文件就不会出现乱码。而Java 在处理属性文件时,只能处理ISO 8859-1( 也称为latin-1 或“西欧语言”) 或UCS-2 (\uxxxx 格式)编码格式。因此,如果在属性文件中含有其他编码格式的字符,如GBK ,Java 仍然会按着ISO 8859-1 编码格式来解释这些字符(如果遇到以"u 开头的字符,就会按着UCS-2 编码格式处理),所以就会出现图1 所示的显示效果。
解决这个问题的方法也很简单,在JDK 中提供了一个native2ascii.exe 命令(在<JDK 安装目录>"bin 目录中),这个命令用来将属性文件中的非ISO 8859-1 格式的字符转换成\uxxxx 格式的UCS-2 编码格式。如按GBK 编码的“用户”就会被转换成UCS-2 编码格式的“\u7528\u6237 ”。
我们可以使用如下的命令转换ErrorDescription.properties 文件的编码格式:
<JDK 安装目录 >\bin\native2ascii ErrorDescription.properties ErrorDescription.properties
使用上面的命令将覆盖旧的ErrorDescription.properties 文件,如果读者想保留旧的属性文件,可以将native2ascii.exe 的第二个命令行参数换成其他的文件名,如下面命令所示:
<JDK 安装目录 >\bin\native2ascii ErrorDescription.properties newDescription.properties
下面的内容显示了ErrorDescription.properties
文件被转换了编码格式后的内容:
被转换了编码格式后的 ErrorDescription.properties
被转换了编码格式后的 ErrorDescription.properties
error.user.blank
=
\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.
error.password.blank = \u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a.
error.password1.confirmation = \u5bc6\u7801\u4e0d\u5339\u914d.
error.email.blank = Email\u4e0d\u80fd\u4e3a\u7a7a
error.email.invalid = \u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684email\u5730\u5740
error.password.blank = \u5bc6\u7801\u4e0d\u80fd\u4e3a\u7a7a.
error.password1.confirmation = \u5bc6\u7801\u4e0d\u5339\u914d.
error.email.blank = Email\u4e0d\u80fd\u4e3a\u7a7a
error.email.invalid = \u4e0d\u662f\u4e00\u4e2a\u6b63\u786e\u7684email\u5730\u5740
按着上面所述的方式运行程序(需要重启Tomcat
或重新发布samples
程序,以便对属性文件的修改生效),就会得到如图2
所示的显示效果。
图2
二、使用
Eclipse
插件编辑属性文件
虽然上面的方法可以很好的解决Java 属性文件的乱码问题,但是这种方式并不方便。因此,每次修改属性文件后,都要使用native2ascii.exe 命令对被修改的属性文件进行编码转换。在本节将介绍两个专门用来编辑Java 属性文件的Eclipse 插件。通过使用这两个插件,可以无需使用native2ascii.exe 命令就可以很好地处理非ISO 8859-1 编码格式的字符。
1. Properties Editor 插件
这个插件可以从http://sourceforge.jp/projects/propedit/ 下载。它分为三个版本:独立运行的版本、JBuilder 版本和Eclipse 版本。
图2
虽然上面的方法可以很好的解决Java 属性文件的乱码问题,但是这种方式并不方便。因此,每次修改属性文件后,都要使用native2ascii.exe 命令对被修改的属性文件进行编码转换。在本节将介绍两个专门用来编辑Java 属性文件的Eclipse 插件。通过使用这两个插件,可以无需使用native2ascii.exe 命令就可以很好地处理非ISO 8859-1 编码格式的字符。
1. Properties Editor 插件
这个插件可以从http://sourceforge.jp/projects/propedit/ 下载。它分为三个版本:独立运行的版本、JBuilder 版本和Eclipse 版本。
这个插件在编辑属性文件时的方式和Eclipse
内嵌的属性编辑器类似。在下载插件压缩包后,将其解压,将features
和plugins
两个目录复制到<MyEclipse
安装目录>"eclipse
目录中即可。用Properties Editor
插件编辑属性文件的界面如图3
所示。
图3
这个插件可以从http://www.guh-software.de/jinto.html 下载。它的基本功能和Properties Editor 插件类似,只是以表格形式编辑属性文件,如图4 所示。
图4
在使用上述两个插件编辑完
ErrorDescription.properties
文件,并保存后,再使用
Eclipse
内嵌的属性编辑器打开这个文件(选中属性文件后,通过【
Open With
】选择相应的属性文件编辑器,如图
5
所示),就会看到
"uxxxx
格式的内容。
图5
图3
2. JInto
插件
这个插件可以从http://www.guh-software.de/jinto.html 下载。它的基本功能和Properties Editor 插件类似,只是以表格形式编辑属性文件,如图4 所示。
图4
图5
这两个插件都可以很好的满足编辑属性文件的需要,而且基本功能相同。读者可以根据自己的喜好选择使用其中的任何一个插件来编辑属性文件。
本文转自 androidguy 51CTO博客,原文链接:http://blog.51cto.com/androidguy/215243,如需转载请自行联系原作者