- ベストアンサー
【Servlet】Linux環境でSJISファイルから読み込んだデータをDB登録後の文字化け
Linux環境でSJISファイルから読み込んだデータをDBに登録するとデータが文字化けしてしまいます。 Windows環境で同じ処理を行うとDBに登録されたデータは文字化けしません。 上記文字化けの原因は、プラットフォームごとに設定されているデフォルトのエンコーディングで変換されてしまっているということでしょうか? また、Linux環境で文字化けしないでDBにデータを登録するにはどうしたらよいのでしょうか? 【環境】 Miracle Linux Oracle 10g
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
その通りです。 特に指定しなければデフォルトエンコーディングになるので Linux環境でSJISファイルを読み込むと文字化けします。 読み込むときにSJISとして読み込めばOKです。 String path = "sample.txt"; FileInputStream fis = new FileInputStream(path); BufferedInputStream bos = new BufferedInputStream(fis); InputStreamReader isr = new InputStreamReader(bos, "Shift_JIS"); 基本的にはこれでOKなのですが、SJIS-日本語EUCの変換の場合、 SJIS側のマッピングの関係で、以下の文字が化けることがあります。 \ 0x815F 0xFF3C[FULLWIDTH REVERSE SOLIDUS] ~ 0x8160 0x301C[WAVE DASH] ∥ 0x8161 0x2016[DOUBLE VERTICAL LINE] - 0x817C 0x2212[MINUS SIGN] ¢ 0x8191 0x00A2[CENT SIGN] £ 0x8192 0x00A3[POUND SIGN] ¬ 0x81CA 0x00AC[NOT SIGN]
お礼
教えていただいた方法で解決しました。 とても助かりました。 まだまだ勉強不足で「InputStreamReader」の存在すら知りませんでした。もっと経験を積まなくては!! どうもありがとうございました。