2014-11-08

【備忘録】入力ストリームにおける文字セットの指定 (Java)

Java でプログラミングをする時、私の場合 Linux 上で Eclipse か NetBeans IDE を使っています。作ったプログラムを Windows 上で使用する場合もあるのですが、時々、読み込んだファイルの文字が、いわゆる「文字化け」を起こしていて慌てることがあります。

例えば、テキストファイル filename.txt を読みこむ場合、入力ストリームを以下のようにします。

BufferedReader br = new BufferedReader(new FileReader("filename.txt"))

(日本語版の)Windows 上で読み込むテキストファイルの文字セットが Shift_JIS (cp932) であれば問題は起こりませんが、例えば UTF-8 だったりすると「文字化け」が発生します。入力ストリームの文字セットに UTF-8 を指定する場合は、次のようにします。

FileInputStream in = new FileInputStream("filename.txt");
InputStreamReader sr = new InputStreamReader(in, "UTF-8");
BufferedReader br = new BufferedReader(sr);

Linux (CentOS 7) 上では文字セットを UTF-8 にしているので、Windows 上で同じ形式のファイルを読み込む場合、うっかり配慮を忘れてしまったりするので、備忘録として書き留めておきました。

参考サイト

 

0 件のコメント: