我们正试图用印地语语言将我们的Spring MVC Web应用程序国际化。当我们尝试在属性文件中复制印地语文本时,属性文件会在印地语字符的位置显示小方框。
当我们运行应用程序并查看JSP时,它会显示问号(???????
)来代替印地语字符。
修改
我的属性文件包含以下内容。
login.message=\u0915\u0943\u092a\u092f\u093e \u0905\u092a\u0928\u0947 \u0916\u093e\u0924\u0947 \u092e\u0947\u0902 \u0932\u0949\u0917 \u0911\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0928\u0940\u091a\u0947 \u0915\u0947 \u092b\u093e\u0930\u094d\u092e \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902
我使用了以下命令来获取此编码字符串。
native2ascii -encoding utf-8 ApplicationResources_hi.properties gen\ApplicationResources_hi.properties
我的JSP页面在头部
中有以下行<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
我还需要做其他事吗?对不起,我可能会遗漏一些东西。
答案 0 :(得分:5)
为了实现这一目标,您实际上必须完成两个单独的步骤:
.properties
文件中的文本添加到Java代码中第一个有点奇怪:.properties
文件是defined to use the ISO-8859-1 encoding,不支持任意Unicode字符,但幸运{{ 1}}文件支持Java源代码也支持的相同Unicode转义,即.properties
。
现在用手写这些逃脱可能会变得很讨厌,所以基本上有两种选择:
\uxxxx
文件并使用native2ascii
将其转换为propper编码.properties
编辑器已经在幕后执行此操作(通常会更多)一旦这样做(通过查看某些本地化字符串的字符值(String.charAt()
)在调试器中验证它,您需要确保浏览器以正确的方式实际接收数据。
这里最简单的方法是确保使用UTF-8编码将数据传输到浏览器,因为UTF-8可以代表所有可能的Unicode代码点。
如果您使用JSP来生成输出,那么您可以使用类似的东西来指定您想要UTF-8输出:
.properties
有关详细信息,请参阅Java EE Tutorial。
答案 1 :(得分:-1)
确保.properties
文件以UTF-8编码保存,JSP页面中的charset
也设置为UTF-8
在IDE中(例如Eclipse),转到Window - &gt;偏好 - &gt;工作区,然后确保文本文件编码也设置为UTF-8
<强>更新强>
您可能需要将文件转换为Ascii,Java已经拥有该工具。
从命令行导航到Java SDK文件夹,然后尝试:
..\Java\bin>native2ascii -encoding utf-8 Labels.txt Labels_locale.properties
将_locale
设置为您的印地语本地(仅限两个字母)