(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Java】UnicodeテキストはFileReaderではなくInputStreamReaderで扱う

スポンサーリンク

はじめに

例としてハングルである「스브스케이팝」をメモ帳にコピペしASCI形式で保存しようとすると

このファイルは、ANSIテキストファイルとして保存すると失われてしまうUnicode形式の文字を含んでいます。Unicodeの情報を保存するには、下のキャンセルをクリックし、文字コードからUnicodeを選択してください。

という文言が出て「??????」に置き換わってしまうので、Unicodeとして保存する必要があります。

そのような外国の文字が入ったファイルをJavaで扱うためのTipsを本記事では紹介します。

環境情報
  • Eclipse IDE for Java Developers - 2019-12

FileReaderでは文字コードを指定できない

該当ファイルファイルをJavaで以下のように読み込むと

FileReader fr1 = new FileReader("C:\\hoge.txt");
BufferedReader br1 = new BufferedReader(fr1);

以下のような文字化けが発生します。

隱ュ螢イ繧ク繝」繧、繧「繝ウ繝?,

解決策

先ほどのコードを以下に置き換えます。

File fr1 = new File("C:\\hoge.txt");
BufferedReader br1 = new BufferedReader(new InputStreamReader(new FileInputStream(fr1),"UTF-8"));

それによってUnicodeのファイルも文字化けせずに扱えます。

ちなみにEclipseを利用している場合はEclipseの設定で文字化けが発生する場合がありますが、その時は「File」→「Properties」にてデフォルトの設定から変更が必要です。

f:id:mtiit:20200329152430p:plain
UTF-8を選択する

終わりに

ハングルでなくても例えばアラビア語や他の言語でも利用できる手順なので、Windows環境で他国の言語をJavaで扱う場合にはぜひ利用してみてください。