java - 如何将 UTF8 属性文件与 Vaadin Bean 验证结合使用

标签 java properties character-encoding vaadin hibernate-validator

我目前正在使用 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/

相关文章:

javascript - mb_convert_encoding 对于 UTF7 字符串给出除 iconv 之外的其他结果

java - 同一类上的 isInstance() 在异常处理期间返回 false

'First or Default'/objects 的 Javascript 'associative arrays' 函数

java - DialogFragment 无法使用 1 个按钮。

ios - 为一副纸牌中的每个 Card 实例赋值

javascript - 在选择框 HTML 中显示 UTF8 和 ISO-8859-1

firefox - Firefox 中的 UTF-8 问题 - 响应 header 覆盖元标记?

java - 从 InputStream 或 Reader 读取长度为 n 的字符串

java - 创建一个基于文本的游戏,我被卡住了