0

エンコーディングの正規名は明確です。公式リストは次のとおりですjava.nio。APIの正規名と、java.ioAPI およびjava.langAPI正規名があります。

1) しかし、歴史的なエンコーディング名のリストは何ですか?

OuputStreamWriter JavadocgetEncoding() :

エンコーディングに歴史的な名前がある場合は、その名前が返されます。それ以外の場合は、エンコーディングの正規名が返されます。

このインスタンスがOutputStreamWriter(OutputStream, String)コンストラクターを使用して作成された場合、返される nameはエンコーディングで一意であるため、コンストラクターに渡される name とは異なる場合があります

Charset JavaDoc :

一部の文字セットには、以前のバージョンの Java プラットフォームとの互換性のために定義された歴史的な名前があります。文字セットの歴史的な名前は、正規名またはエイリアスのいずれかです。過去の名前は、InputStreamReader および OutputStreamWriter クラスの getEncoding() メソッドによって返されます。

2)エンコーディングの正規名の 公式リストでは、java.io正規名には「UTF8」が使用され、「UTF-8」は新しいの正規名であると記載されていjava.nioます。

しかし、InputStreamReader/OutputStreamWriter は「UTF-8」引数を受け入れます!

try {
    FileOutputStream stream1 = new FileOutputStream("d:\\file.txt");
    OutputStreamWriter writer1 = new OutputStreamWriter(stream1, "UTF-8");
    System.out.println(writer1.getEncoding());
    writer1.close();
} catch (UnsupportedEncodingException e) {
    System.out.println("wrong encoding detected"); // never triggered
}

「UTF-8」は問題なく認識されているようですが、UnsupportedEncodingException起動しません!

PS私は、現在(SE8)はNIOスタイルを受け入れることができ、java.lang/java.ioスタイルは歴史的と呼ばれています。少なくとも InputStreamReader/OutputStreamWriter には当てはまります。

私の命題は正しいですか?

4

0 に答える 0