我目前正在使用Vaadin和一个名为Vaadin Bean Validation的插件用于Java Bean验证API 1.0(JSR-303)。这个API的实现是hibernate-validator。如何在Vaadin Bean验证中使用UTF8属性文件
我有一个用UTF8作为字符集的自定义属性文件。但通过这种机制,像“éàà”这样的特殊字母总是显示错误。
我该如何解决这个问题?
我目前正在使用Vaadin和一个名为Vaadin Bean Validation的插件用于Java Bean验证API 1.0(JSR-303)。这个API的实现是hibernate-validator。如何在Vaadin Bean验证中使用UTF8属性文件
我有一个用UTF8作为字符集的自定义属性文件。但通过这种机制,像“éàà”这样的特殊字母总是显示错误。
我该如何解决这个问题?
属性文件是按照specification使用ISO阅读-8859-1。
...输入/输出流以ISO 8859-1字符编码进行编码。无法直接用此编码表示的字符可以使用Unicode转义写入;在转义序列中只允许一个'u'字符。 native2ascii工具可用于将属性文件转换为其他字符编码并将其转换为其他字符编码。
因此,需要在Unicode escape sequences\uXXXX
转义未被覆盖的范围ISO-8859-1任何字符。您可以使用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/