Struts1.x系列教程(3):属性(资源)文件乱码问题的解决之道.docx
文本预览下载声明
上一篇: HYPERLINK /nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/01/13/251197.html Struts1.x系列教程(2):简单的数据验证
??? 资源文件不仅仅需要保存英文信息,在很多时候,也需要保存其他的语言信息,如中文信息。但Java的属性文件只支持英文,要想在属性文件中保存中文,需要使用uxxxx格式,但这非常不方便,因此,本文将分别介绍如何使用native2ascii.exe和Eclipse插件的方式来解决这个问题。
一、使用native2ascii命令使资源文件支持中文??? 从上篇文章中的ErrorDperties文件中可以看到所有的错误提示信息都是英文的。在客户端显示这些英文信息没有任何问题。但如果将这些英文错误提示信息改成相应的中错误提示信息又会如何呢???? 在修改之前,先让我们选中ErrorDperties文件,单击右键,在右键菜单中选择【Properties】菜单项,打开属性设置对话框,在右侧所列的项目中选择【Resource】。看一下右下角的“Text file encoding”的编码格式,如果编码格式不是UTF-8或GBK(也包括GB2312、GB18030),请将编码格式修改为UTF-8或GBK,否则无法使用MyEclipse的属性编辑器输入中文。在设置完属性文件的编码格式后,将ErrorDperties文件的内容按着该文件的英文版所示修改成中文提示信息。中文版的ErrorDperties
??error.user.blank?=?用户名不能为空.??error.password.blank?=?密码不能为空.??error.password1.confirmation?=?密码不匹配.??error.email.blank?=?Email不能为空??error.email.invalid?=?不是一个正确的email地址
重新启动Tomcat后,在IE中输入如下的URL: HYPERLINK http://localhost:8080/samples/simpleValidation.jsp http://localhost:8080/samples/simpleValidation.jsp
当出现信息输入界面后,点击“提交”按钮,将会显示如图1的效果。
图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”。??? 我们可以使用如下的命令转换ErrorDperties文件的编码格式:??? JDK安装目录\bin\native2ascii ErrorDperties ErrorDperties
??? 使用上面的命令将覆盖旧的ErrorDperties文件,如果读者想保留旧的属性文件,可以将native2ascii.exe的第二个命令行参数换成其他的文件名,如下面命令所示:??? JDK安装目录\bin\native2ascii ErrorDperties newDperties
下面的内容显示了ErrorDperties文件被转换了编码格式后的内容:被转换了编码格式后的ErrorDperties
error.user.blank?=?\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.error.password.blank?=?
显示全部