如何在Java中的Application Properties文件中保存印地语字符?

时间:2011-09-06 05:31:17

标签: java jsp internationalization properties hindi

我们正试图用印地语语言将我们的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">

我还需要做其他事吗?对不起,我可能会遗漏一些东西。

2 个答案:

答案 0 :(得分:5)

为了实现这一目标,您实际上必须完成两个单独的步骤:

  1. 正确地将.properties文件中的文本添加到Java代码中
  2. 以您理解的方式将Java代码中的文本提供给浏览器。
  3. 第一个有点奇怪:.properties文件是defined to use the ISO-8859-1 encoding支持任意Unicode字符,幸运{{ 1}}文件支持Java源代码也支持的相同Unicode转义,即.properties

    现在用手写这些逃脱可能会变得很讨厌,所以基本上有两种选择:

    • 使用您选择的编码(可能是UTF-8)编写\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设置为您的印地语本地(仅限两个字母)