java - 如何在 Java 的应用程序属性文件中保存印地语字符?

标签 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 个独立的步骤才能使其正常工作:

  1. 从您的 .properties 文件中正确获取文本到您的 Java 代码中,并且
  2. 以浏览器理解的方式从 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/

相关文章:

javascript - Bootstrap 单选按钮不切换

java - 不混合 HTML 的纯 JSP,通过将 html 编写为类 Java 代码

Angular 9 国际化 - 请求的语言环境错误

c# - 如何将 ToLongDateString() 的日期和月份首字母大写导致 es-mx Culture?

java - 在循环中延迟重新绘制 JPanel

java - 如何在 Android 中检测整个图像已下载

java - 从数据库中恢复数据的最佳方法是什么?

java - Android 中 OpenGL ES 2.0 形状的翻译

java - 在 JSP 中调用 Java 方法

ruby-on-rails - Rails 日期选择选项?