ISO 8859以外の文字を含む言語のリソースファイル
-
10-07-2019 - |
質問
JSTLを使用してi18nを実装しているときに、.propertiesファイルで定義され、ISO 8859以外の文字(たとえばinidic言語)を持つリソーステキストがタグでレンダリングできないという問題が発生しました。
最終的にタグとBundleHelperクラスのコードを詳しく調べた結果、ResourceBundle.getBundleメソッドが内部で使用され、PropertyResourceBundleを使用して.propertiesファイルがリソースバンドルとしてロードされることがわかりました。
内部では、ISO 8859以外の文字の読み取りをサポートしていないjava.util.Properties#load(InputStream)メソッドに依存しており、唯一の回避策は、そのような文字を/ u hex hex hex hex形式で表すことです。 .propertiesファイル全体がヒンディー語用である場合、非実用的です!
これに対する回避策はありますか。 .propertiesファイルでXML形式を使用しようとしましたが、PropertyResourceBundleで認識されませんでした!
環境の詳細:Jdk 1.5、Weblogic 9.2
解決
JDK 1.5を使用することを絶対に持っています? 1.6まで移動できる場合は、 load(Reader)
オーバーロードを使用して、他のエンコード(UTF-8など)でファイルを保存できます。確かに、PropertyResourceBundleにどのように適合するかわかりません。
ISO-8859-1ファイルを操作する場合でも、ファイルを編集するためにその形式を使用する必要がないことを忘れないでください。 native2ascii
<を使用できます。 / a>ファイルを別のエンコードから変換します。 「ソース」を保持するプロパティファイルをUTF-8として、ビルドの一部として native2ascii
を実行します。例:
native2ascii -encoding UTF-8 Foo.properties.utf8 Foo.properties
他のヒント
好きなエンコーディングでファイルを作成し、 native2ascii ツール(これはまさにこの目的のためにJDKに付属)ビルドまたはデプロイメントプロセスの一部として。