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)
我还需要做其他事吗?对不起,我可能会遗漏一些东西.
你实际上必须得到两个单独的步骤来实现这个目的:
.properties正确地将文件中的文本添加到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教程.