3

我们正在尝试用印地语国际化我们的 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 页面在 head 部分有以下行

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

我还需要做其他事情吗?抱歉,我可能在这里遗漏了一些东西。

4

2 回答 2

5

您实际上必须获得 2 个单独的步骤才能正常工作:

  1. 正确地将文件中的文本获取.properties到您的 Java 代码中,并且
  2. 以浏览器可以理解的方式从您的 Java 代码中获取文本。

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

现在手工编写这些转义可能会变得很讨厌,所以基本上有两种选择:

  • .properties使用您选择的编码(可能是 UTF-8)编写一个文件,并用于native2ascii将其转换为适当的编码
  • 使用.properties已经在幕后执行此操作(通常更多)的专用编辑器

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

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

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

<%@ page contentType="text/html; charset=utf-8" language="java" %>

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

于 2011-09-06T06:17:40.823 回答
-1

确保.properties文件以 UTF-8 编码保存,并且charsetJSP 页面中的 也设置为UTF-8

在您的 IDE(例如 Eclipse)中,转到 Window -> Preferences -> Workspace,然后确保Text File Encoding也设置为 UTF-8

更新
您可能需要将文件转换为 Ascii,Java 已经有该工具。从命令行导航到 Java SDK 文件夹,然后试试这个:

..\Java\bin>native2ascii -encoding utf-8 Labels.txt Labels_locale.properties

设置_locale为您当地的印地语(仅两个字母)

于 2011-09-06T05:39:24.583 回答