2011-02-04 10 views
2

私はutf-8でエンコードされたファイル(messages_en_US.properties、messages_fr.properties、...)に複数のmessages.propertiesファイルを持っています。これらのプロパティファイルの中には、アジア言語のものがあります。つまり、文字はISO-8859-1エンコードでは表現できず、Unicodeエスケープで表現する必要があります。私はこれをしたくありません。下のリンクのドキュメントに基づいて、リーダーを取るコンストラクタを使用する場合、その制限はありません。Java6のPropertyResourceBundle(Reader reader)の使用例

http://download.oracle.com/javase/6/docs/api/java/util/PropertyResourceBundle.html

しかし、私はこのコンストラクタを使用する場合、私はロケールに基づいて正しいプロパティファイルを決定した機能を失っています。

誰かがこれを手伝ってくれますか?

答えて

0

PropertyResourceBundleを直接インスタンス化しないでください。代わりにResourceBundle.getBundle()を使用してください。

解像度階層を使用している間に代替フォーマットを読み込む方法については、ResourceBundle.Controlの2番目の例も参照してください。この例はXMLプロパティをロードするためのものですが、UTF-8でエンコードされたInputStreamを使用するためには適応可能である必要があります。

+0

したがって、ResourceBundle rb = ResourceBundle.getBundle( "myMessages"、locale)。 – frnlncPrgrmr

+1

しかし、もし私が上記のことをすると、私はISO-8859-1エンコーディングに悩まされています。私のアジア系文字セットはサポートされません。だから、私はどのようにリーダーを利用するのですか? – frnlncPrgrmr

+0

あなたが使用できるはずの 'ResourceBundle.Control'へのポインタを含むように私の投稿を編集しました。 –

0

あなたはまだnative2asciiを使いたいと思うようです。 :-(

この方法では、\ uXXXXというのシーケンスとして、あなたのアジア言語の文字をエンコードすることができます。ResourceBundleのメカニズムは、この形式でそれらをロードすることができます。

我々は何を、私たちはUTF-8でプロパティファイルを編集していることです

Java6は、手動で読み込むときにプロパティのエンコーディングをサポートしているのを見て、そのサポートがプロパティに基づいて構築されている他の部分に流された場合、リソースバンドルなど)