BufferedReaderで文字化け
FC5に構築したサーバーで、アップロードしたCSVファイルの内容をデータベースにセットする機能をテストしたところ、文字化け発生。
Windows、MacOSXでは問題なかったのだが。違いはJDKのバージョン...??
CSVファイルから一行読み込んだ際のStringの内容がFC5だけ違う。コードはこう。
FileItem item <<--- DiskFileUploadから取得
File csv = new File(".", uploadedCSVfileName);
item.write(csv);
FileReader fileReader = new FileReader(csv);
BufferedReader bufReader = new BufferedFileReader(fileReader);
String readLine = bufReader.readLine();
// ここでreadLineの中身が文字化け。
アップロードしたファイルの中身のエンコードは"Windows-31J"。こうやって取得したreadlineを、このあとどういじくろうともダメ。
試行錯誤の結果、BufferedReaderの作り方を変える。
InputStream stream = item.getInputStream();
InputStreamReader reader = new InputStreamReader(stream, "Windows-31J");
BufferedReader BufferedReader = new BufferedReader(reader);
String readLine = bufReader.readLine();
// 正しく取得
悩ましいもんです。

