我们正在尝试使用印地语将我们的 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 个独立的步骤才能使其正常工作:
- 从您的
.properties
文件中正确获取文本到您的 Java 代码中,并且 - 以浏览器理解的方式从 Java 代码获取文本。
第一个有点奇怪:.properties
文件是 defined to use the ISO-8859-1 encoding ,不支持任意 Unicode 字符,但是幸运的是 .properties
文件支持 Java 源代码也支持的相同 Unicode 转义,即 \uxxxx
.
现在手写这些转义符会变得很讨厌,所以基本上有两种选择:
- 使用您选择的编码(可能是 UTF-8)编写一个
.properties
文件并使用native2ascii
将其转换为正确的编码 - 使用专用的
.properties
编辑器,该编辑器已经在幕后执行此操作(通常更多)
一旦成功(通过查看字符值(某些本地化字符串的 String.charAt()
)在调试器中验证它),您需要确保浏览器实际以正确的方式接收数据。
这里最简单的方法是确保使用 UTF-8 编码将数据发送到浏览器,因为 UTF-8 可以表示所有可能的 Unicode 代码点。
如果您使用 JSP 来生成输出,那么您可以使用类似这样的内容来指定您想要 UTF-8 输出:
<%@ page contentType="text/html; charset=utf-8" language="java" %>
参见 Java EE Tutorial了解详情。
关于java - 如何在 Java 的应用程序属性文件中保存印地语字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7315334/