- ベストアンサー
ファイル書き込みに関して
FileOutputStream fos = new FileOutputStream("test"); OutputStreamWriter out = new OutputStreamWriter(fos, "UTF-8"); out.write("なに"); out.close(); fos.close(); 以上のコードを実行させて、ファイルtestをUTF8で開いたら、文字化けしています。どう直したらいいですか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
OutputStreamWriterの文字コード指定は、通常の文字はサポートしているようですが「トン」や「(4)」のような環境依存文字は文字化けしてしまうようです。 指定せず、使うことをおすすめします。
その他の回答 (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のコードには問題ありません。 文字列が短すぎて、そのファイルを開くときの文字コード自動判定に失敗しているだけでしょう。
質問者
補足
E7 B8 BA EF BD AA E7 B8 BA EF BD ABでした
補足
なるほど、指定しなければ、直りました。