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

ash*_*ram 3 java jsp properties internationalization hindi

我们正在尝试用印地语语言将Spring MVC Web应用程序国际化.当我们尝试在属性文件中复制印地语文本时,属性文件会在印地语字符的位置显示小方框.

当我们运行应用程序并查看JSP时,它会显示问号marks(???????)来代替印地语字符.

编辑:

我的属性文件包含以下内容.

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
Run Code Online (Sandbox Code Playgroud)

我使用以下命令来获取此编码的字符串.

native2ascii -encoding utf-8 ApplicationResources_hi.properties gen\ApplicationResources_hi.properties
Run Code Online (Sandbox Code Playgroud)

我的JSP页面在head部分中有以下行

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
Run Code Online (Sandbox Code Playgroud)

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

Joa*_*uer 5

你实际上必须得到两个单独的步骤来实现这个目的:

  1. .properties正确地将文件中的文本添加到Java代码中
  2. 以您理解的方式将Java代码中的文本提供给浏览器.

第一个有些奇怪:.properties文件被定义为使用ISO-8859-1编码,它支持任意Unicode字符,幸运的是.properties文件支持Java源代码也支持的相同Unicode转义,即\uxxxx.

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

  • .properties使用您选择的编码(可能是UTF-8)编写一个文件,并使用native2ascii它将其转换为propper编码
  • 使用一个专门的.properties编辑器,在幕后已经完成了这个(通常更多)

一旦这样做(通过查看String.charAt()一些本地化字符串的字符值在调试器中验证它),您需要确保浏览器实际以正确的方式接收数据.

这里最简单的方法是确保使用UTF-8编码将数据传送到浏览器,因为UTF-8可以代表所有可能的Unicode代码点.

如果您使用JSP来生成输出,那么您可以使用类似的东西来指定您想要UTF-8输出:

<%@ page contentType="text/html; charset=utf-8" language="java" %>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Java EE教程.

  • 您指定其编码的页面*应*有(即你答应你写的UTF-8的浏览器),但我不明白,你真正确保您在实际工作**写UTF-8.你的JSP应该在顶部附近有这样的东西:`<%@ page contentType ="text/html; charset = utf-8"language ="java"%>`.请参阅[此页面了解详细信息](http://download.oracle.com/javaee/5/tutorial/doc/bnayb.html#bnayg). (3认同)