我目前正在使用 Vaadin 和一个名为Vaadin Bean Validation的附加组件,用于 Java Bean Validation API 1.0 (JSR-303)。这个 API 的实现是 hibernate-validator。
我有一个以 UTF8 作为字符集的自定义属性文件。但是使用这种机制,像“éèà”这样的特殊字母总是显示错误。
我怎样才能解决这个问题?
我目前正在使用 Vaadin 和一个名为Vaadin Bean Validation的附加组件,用于 Java Bean Validation API 1.0 (JSR-303)。这个 API 的实现是 hibernate-validator。
我有一个以 UTF8 作为字符集的自定义属性文件。但是使用这种机制,像“éèà”这样的特殊字母总是显示错误。
我怎样才能解决这个问题?
属性文件按照使用 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 范围未涵盖的字符。
转义 UTF-8 字符是属性文件。
例如:
foo.bar.max=Foo \u00E1 \u00E9 and \u00F6bar
将显示为:
Foo á é and öbar
这是一个可以帮助您转换字符的工具:http ://rishida.net/tools/conversion/