事象
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");
以上、ご参考になれば幸いです。