0

Java で Properties クラスを作成する場合、入力ストリームが ISO-8859-1 でエンコードされている必要があります。しかし実際には、ISO-8859-1 ではなく、UTF-8 を使用して非ラテン プロパティ ファイルを native2ascii ツールで変換します。

  • JDK doc によると、入力ストリームは ISO-8859-1 でエンコードする必要があります。つまり、ソース ファイルは ISO-8859-1 でエンコードされています。
  • デコードとエンコードは同じ ISO-8859-1 を使用する必要があるため、Java の Properties クラスは ISO-8859-1 を使用してデコードする必要があります。
  • テストによると、実際には、ISO-8859-1 ではなく、native2ascii のエンコーディング オプションとして UTF-8 を使用しています。なんで?

次のようにテストします。

  • 「key=Ü」を含む test.properties ファイルを作成します。
  • 生成された ISO-8859-1 プロパティ ファイル: key=\u00c3\u009c

      native2ascii -encoding ISO-8859-1 test.properties iso88591.propertie: 
    
  • 生成された UTF-8 プロパティ ファイル: key=\u00dc

      native2ascii -encoding UTF-8 test.properties utf8.properties 
    
  • プロパティを作成して、生成された 2 つのプロパティ ファイルをロードします。

    Properties p = new Properties();
    //InputStream inStream = new FileInputStream("src/test/java/com/active/translation/iso88591.properties");
    InputStream inStream = new FileInputStream("src/test/java/com/active/translation/utf8.properties");
    p.load(inStream);
    
    System.out.println(p.getProperty("key"));
    
  • iso88591.propertie の結果は次のとおりです。

  • utf8.properties の結果: Ü

答え:

その -encoding は、ソース ファイルで使用されている実際のエンコーディングと一致する必要があります。見た目からしてUTF-8です。– Thilo 4 月 3 日 2:52

4

1 に答える 1

0

その -encoding は、ソース ファイルで使用されている実際のエンコーディングと一致する必要があります。見た目からしてUTF-8です。– Thilo 4 月 3 日 2:52

于 2013-04-09T01:44:01.743 に答える