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