現在、Vaadin とVaadin Bean Validation for Java Bean Validation API 1.0 (JSR-303) という名前のアドオンを使用しています。この API の実装は hibernate-validator です。
文字セットが UTF8 のカスタム プロパティ ファイルがあります。しかし、この仕組みでは、「éèà」などの特殊文字は常に間違って表示されます。
どうすればこれを修正できますか?
現在、Vaadin とVaadin Bean Validation for Java Bean Validation API 1.0 (JSR-303) という名前のアドオンを使用しています。この API の実装は hibernate-validator です。
文字セットが UTF8 のカスタム プロパティ ファイルがあります。しかし、この仕組みでは、「éèà」などの特殊文字は常に間違って表示されます。
どうすればこれを修正できますか?
プロパティファイルは、ISO-8859-1を使用して読み取られた仕様に準拠しています。
...入力/出力ストリームはISO8859-1文字エンコードでエンコードされます。このエンコーディングで直接表現できない文字は、Unicodeエスケープを使用して記述できます。エスケープシーケンスでは、単一の「u」文字のみが許可されます。native2asciiツールを使用して、プロパティファイルを他の文字エンコードとの間で変換できます。
したがって、 ISO-8859-1の範囲でカバーされていない文字は、 Unicodeエスケープシーケンス でエスケープする必要があります\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範囲でカバーされていない文字が自動的にエスケープされます。
UTF-8 文字をエスケープするのはプロパティ ファイルです。
例えば:
foo.bar.max=Foo \u00E1 \u00E9 and \u00F6bar
次のように表示されます。
Foo á é and öbar
文字の変換に役立つツールを次に示します: http://rishida.net/tools/conversion/