【问题标题】:HTML charset and encodingHTML 字符集和编码
【发布时间】:2012-01-07 01:58:57
【问题描述】:

我需要构建一个将本地化为非拉丁语言的 JSP 应用程序。 JSP 页面包含从数据库 (MySQL) 中检索一些显示元素和从资源包(其内容以 Unicode 编写的属性文件,我也尝试过 UTF-8)中检索其他显示元素的标记。

我认为,问题在于从资源包返回的字符串似乎将 unicode/UTF-8 代码点的每个字节都放在了自己的字符串字符中。例如 /u0620 在返回的字符串中占用两个字符,第一个字符为 0x06,第二个字符为 0x20。从资源包中检索到的字符串的大小是原来的两倍。

我的问题是在属性文件本身还是在 resourceBundle 中?

非常感谢任何帮助。

【问题讨论】:

    标签: encoding localization resourcebundle


    【解决方案1】:

    如果你使用 UTF-8,那么一个 UTF-8 字符实际上是 IS 2 个字节。编程语言将其处理为两个字节还是一个字符对于您的实际代码而言并不重要。

    另外,请避免使用 UTF-16 或其他形式的 Unicode。 UTF-8 是当今唯一“正确”的做事方式。

    另外,正如 bmargulies 指出的那样,您可能想要使用 pageEncoding="utf-8"

    【讨论】:

    • 是的,我意识到这一点。问题出在我的属性文件的编码中。它需要使用转义的 unicode (/uxxxx),而不是 unicode 字符。当我的属性文件中有纯 unicode 字符时,资源包将我的字符串中的字符加倍,每个字符包含 unicode/UTF-8 代码点的一半。但是当我将文件更改为只有代表转义的 unicode/UTF-8 代码点的 ascii 字符时,resourceBundle 正确读取了文件。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多