ISOでエンコードされたファイルがあるが、Javaを使用してUTF-8としてファイルを読み取りたい場合でも、同じテキストを取得できますか?
µÃÿなどの特殊文字は同じように表示されますか?
ISOでエンコードされたファイルがあるが、Javaを使用してUTF-8としてファイルを読み取りたい場合でも、同じテキストを取得できますか?
µÃÿなどの特殊文字は同じように表示されますか?
いいえ、あなたはしません。UTF-8 は、ISO-8859-1 と同じ方法で U+007f を超える文字をエンコードしません (ISO-8859-1 は、U+0080 から U+00ff までを 1 バイトとしてエンコードします\x80
が\xff
、UTF-8 はそれぞれに 2 バイトを使用します)。それらの文字)。
ファイルを開くときは、明示的なエンコーディング仕様を使用する必要があります。new InputStreamReader(new FileInputStream(...), <encoding>)
要するに、いいえ。ISO での文字の (ビット単位の) 表現方法は、UTF-8 での文字の表現方法と同じではありません。
ただし、ファイルを ISO から UTF-8 に変換することはできますが、UTF-8 から ISO に変換することはできません。これは、UTF-8 には ISO よりも多くの認識可能な文字があるためです。
私の推奨は、エンコーディングを検出し ( Java: ストリームの正しい文字セットエンコーディングを決定する方法を参照)、それに応じて各ケースを処理することです。