プロパティ ファイル + ResourceBundle を使用して異なる文字列を取得する Hello World プログラムを作成することで、国際化を実験しています。
具体的には、「hello.world=Hello World!」を保存する「messages_en_US.properties」というファイルがありますが、もちろん問題なく動作します。
次に、あらゆる種類のことを試した「messages_ja_JP.properties」ファイルがありますが、コンソールまたはSwingに出力すると、常にある種の文字化けした文字列として表示されます。ソースに直接入力された日本語の Java 文字列は正常に出力されるため、明らかに問題は Java 文字列へのコンテンツの読み取りにあります。
私が試したこと:
- 日本語文字列を値としてそのまま使用した UTF-8 エンコーディングの .properties ファイル。私が読んだものは、Javaがプロパティファイルがシステムのネイティブエンコーディングであることを期待していることを示しています...? どちらの方法でも機能しませんでした。
- デフォルトのエンコーディング (ISO-8859-1) のファイルと、Java に含まれる native2ascii プログラムによって作成されたエスケープされた Unicode として格納された値。SHIFT-JIS、EUC-JP、ISO-2022-JPなど、さまざまな日本語エンコーディングのソースファイルで試してみました。
編集:
これを入力しているときに実際にこれを理解しましたが、とにかく投稿して、誰かの助けになる場合に備えて回答すると思いました。