我目前正在使用 Vaadin 和一个名为 Vaadin Bean Validation 的附加组件适用于 Java Bean 验证 API 1.0 (JSR-303)。该API的实现是hibernate-validator。
我有一个以 UTF8 作为字符集的自定义属性文件。但使用这种机制,像“éèà”这样的特殊字母总是显示错误。
我该如何解决这个问题?
最佳答案
属性文件按照specification使用 ISO-8859-1 进行读取。
... the input/output stream is encoded in ISO 8859-1 character encoding. Characters that cannot be directly represented in this encoding can be written using Unicode escapes ; only a single 'u' character is allowed in an escape sequence. The native2ascii tool can be used to convert property files to and from other character encodings.
因此,ISO-8859-1 未涵盖的任何字符范围需要在Unicode escape sequences中进行转义\uXXXX
。您可以使用 JDK 提供的 native2ascii
工具来转换它们。您可以在 JDK 的 /bin
文件夹中找到它。
下面是一个示例,假设 foo_utf8.properties
是您使用 UTF-8 保存的属性,并且 foo.properties
是您想要使用的属性在您的应用程序中:
native2ascii –encoding UTF-8 foo_utf8.properties foo.properties
如果您使用的是 Eclipse 等 IDE,那么您只需使用内置属性文件编辑器即可,该编辑器应自动与 .properties
文件关联。如果您使用此编辑器而不是纯文本编辑器,那么它会自动转义 ISO-8859-1 范围之外的字符。
关于java - 如何将 UTF8 属性文件与 Vaadin Bean 验证结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12263696/