• ベストアンサー

ファイル書き込みに関して

FileOutputStream fos = new FileOutputStream("test"); OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8"); out.write("なに"); out.close(); fos.close(); 以上のコードを実行させて、ファイルtestをUTF8で開いたら、文字化けしています。どう直したらいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • e00083
  • ベストアンサー率31% (25/80)
回答No.2

OutputStreamWriterの文字コード指定は、通常の文字はサポートしているようですが「トン」や「(4)」のような環境依存文字は文字化けしてしまうようです。 指定せず、使うことをおすすめします。

likewind
質問者

補足

なるほど、指定しなければ、直りました。

その他の回答 (2)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

> 「トン」や「(4)」のような環境依存文字は どちらの文字もUnicodeに含まれているのでUTF-8にするのは問題ありません。 前者がUnicodeで0x3327、UTF-8ではE3 8C A7 後者がUnicodeで0x2477、UTF-8ではE2 91 B7です。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

出力されたtestを16進ダンプして、その内容が E3 81 AA E3 81 AB となっていれば、Javaのコードには問題ありません。 文字列が短すぎて、そのファイルを開くときの文字コード自動判定に失敗しているだけでしょう。

likewind
質問者

補足

E7 B8 BA EF BD AA E7 B8 BA EF BD ABでした

関連するQ&A