2

我目前正在使用 Vaadin 和一个名为Vaadin Bean Validation的附加组件,用于 Java Bean Validation API 1.0 (JSR-303)。这个 API 的实现是 hibernate-validator。

我有一个以 UTF8 作为字符集的自定义属性文件。但是使用这种机制,像“éèà”这样的特殊字母总是显示错误。

我怎样才能解决这个问题?

4

2 回答 2

4

属性文件按照使用 ISO-8859-1 读取的规范。

...输入/输出流以 ISO 8859-1 字符编码进行编码。不能用这种编码直接表示的字符可以使用 Unicode 转义来编写;转义序列中只允许使用单个 'u' 字符。native2ascii 工具可用于将属性文件与其他字符编码进行转换。

因此, ISO-8859-1范围未涵盖的任何字符都需要在Unicode 转义序列 \uXXXX中进行转义。您可以使用 JDK 提供的native2ascii工具来转换它们。您可以在 JDK 的/bin文件夹中找到它。

这是一个示例,假设它foo_utf8.properties是您使用 UTF-8 保存的并且foo.properties是您想在应用程序中使用的示例:

native2ascii –encoding UTF-8 foo_utf8.properties foo.properties

如果您使用的是 IDE,例如 Eclipse,那么您可以只使用内置的属性文件编辑器,它应该自动与.properties文件关联。如果您使用此编辑器而不是纯文本编辑器,那么它将自动转义 ISO-8859-1 范围未涵盖的字符。

于 2012-09-04T16:45:41.067 回答
0

转义 UTF-8 字符是属性文件。

例如:

foo.bar.max=Foo \u00E1 \u00E9 and \u00F6bar

将显示为:

Foo á é and öbar

这是一个可以帮助您转换字符的工具:http ://rishida.net/tools/conversion/

于 2012-09-04T16:41:27.740 回答