【问题标题】:ZK internationalization: UNICODE instead of accented characterZK 国际化:UNICODE 代替重音字符
【发布时间】:2016-11-21 15:23:55
【问题描述】:

我的应用程序使用标签进行国际化。

在所有页面中,重音字符都显示为 unicode。例如,

à ---> \u00E0

我不知道哪个可能是问题所在,也找不到任何关于此主题的有用文档:我只找到了http://forum.zkoss.org/question/14643/internationalization-accent-characters/?answer=101862#post-id-101862,但所有建议的链接都已失效。

使用 Eclipse ResourceBundle Editor 编辑属性文件,该编辑器将重音字母保存为 unicode:我不知道为什么重音字符呈现为 \uXXXX。

提前感谢您的合作。

【问题讨论】:

  • 不清楚你的问题是什么
  • 为什么要投反对票?澄清请求就足够了......无论如何,我编辑了我的问题。希望现在一切都清楚了。

标签: java internationalization zk unicode-escapes


【解决方案1】:

最后我解决了这个问题。

这只是一个编码问题,正如chillworld 和其他论坛中的其他人所说(感谢您让我走上正确的道路!)。

我必须实施多种技巧才能让我的应用程序正常工作:

  1. .properties 文件重命名为 .labels:这是因为 Eclipse 假定所有属性文件都是 ISO-8859-1 编码的,如果您想确保它保留您的编码,您必须重命名它。最重要的是,确保文件是 UTF-8 编码的(在 Eclipse 中右键单击文件,单击“属性”,编码在最后一行)。要修改编码,您可以使用外部编辑器(SublimeText、UltraEdit、Geany、gedit...)或在 Eclipse 中转到 Edit->Set Encoding 并选择 UTF-8。

  2. 避免使用 ResourceBundle Editor eclipse 插件或其他属性编辑器(如 JBoss 属性编辑器):问题在于它们会自动将重音字母转换为转义的 unicode 序列,因为它们假定属性文件是 ISO-8859-1编码。

  3. 将所有出现的 unicode 序列替换为相应的字符(例如,将 \u00E0 替换为 à,等等...)。

  4. 最后,重启 Tomcat:它应该可以工作了。

【讨论】:

  • 我将始终使用 notepad++ 创建它们,这是最简单的正确方法。 Netbeans 也确实存在编码问题。
【解决方案2】:

你有没有检查 ZK 的 I18N 文件?

这是它的前 3 行:

#"charset=utf-8"
#创建于 2006 年 9 月 21 日,作者 Jérôme Vergereau
#Copyright (C) 2006 Potix Corporation

如您所见,它保存为 UTF-8 而不是 unicode,所以请尝试使用 UTF-8 作为编码。

【讨论】:

  • 您好,chillworld,非常感谢您的回答。我没有找到你指出的 3 行。它们是否在 .properties (ResourceBundle) 文件的标题中?我试图在属性文件的开头插入它们,但暂时我仍然卡住了......再次感谢。
  • 它们来自依赖 zul.jar => metainfo/mesg。这些是 cmets,在您的文件中不需要,但您需要将文件编码更改为 utf-8 而不是 Unicode。
  • 谢谢,它现在可以工作了(见我的帖子)。真正的问题是使用 ResourceBundle Editor 自动插入转义的 unicode 序列。 ZK 认为它们是合法字符(因为它假定文件是 UTF-8 编码的)并且不会对它们进行转义。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多