(O+P)ut

アウトプット



(O+P)ut

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

【Java】外国語(ハングル等)を標準出力にprintで出すと???となる事象

スポンサーリンク

事象

UTF-8で文字列を読み込み加工してファイルやコンソールに出力するも

방탄소년단

?????

となる。

尚、ファイルへの出力及びコンソールへの出力は以下で実施している。

FileWriter filewriter = new FileWriter(file);
filewriter.write(text);
System.out.print(text);
環境情報
  • Eclipse IDE for Java Developers - 2019-12

原因/解決策

ファイルに出力する部分にBufferedWriterクラスを利用して"UTF-8"を指定する。

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));

そうすると指定したファイルが????で文字化けせずに書き込みが可能。

以下、補足です。

補足

以下記事の書き込みバージョンです。

ファイルを読み込む際は以下のように文字コードを確認して読み込みますが

$ nkf --guess file.txt
UTF-8 (LF)

同じように出力する際にも文字コードを意識する必要があります。

全体としては以下のようにFileクラスを作成して

File file = new File("\\cygwin64\\home\\xx\\file.txt");

それを以下のように渡して

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));

以下で書き込みます。

writer.write("hoge\r\n");

以上、ご参考になれば幸いです。