我目前正在使用Vaadin和一个名为Vaadin Bean Validation的附加组件用于Java Bean Validation API 1.0(JSR-303)。这个API的实现是hibernate-validator。
我有一个自定义属性文件,UTF8为charset。但是通过这种机制,像“éèà”这样的特殊字母总是显示错误。
我该如何解决这个问题?
答案 0 :(得分:4)
使用ISO-8859-1读取属性文件specification。
...输入/输出流以ISO 8859-1字符编码进行编码。无法在此编码中直接表示的字符可以使用Unicode转义编写;只有一个' u'转义序列中允许使用字符。 native2ascii工具可用于将属性文件转换为其他字符编码或从其他字符编码转换。
因此,任何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
是您希望在应用中使用的.properties
:
{{1}}
如果您正在使用Eclipse之类的IDE,那么您可以使用内置属性文件编辑器,该编辑器应自动与{{1}}文件关联。如果您使用此编辑器而不是纯文本编辑器,那么它将自动转义ISO-8859-1范围未涵盖的字符。
答案 1 :(得分:0)
转义UTF-8字符是属性文件。
e.g:
foo.bar.max=Foo \u00E1 \u00E9 and \u00F6bar
将显示为:
Foo á é and öbar
这是一个可以帮助您转换字符的工具:http://rishida.net/tools/conversion/