• ベストアンサー

【Servlet】Linux環境でSJISファイルから読み込んだデータをDB登録後の文字化け

Linux環境でSJISファイルから読み込んだデータをDBに登録するとデータが文字化けしてしまいます。 Windows環境で同じ処理を行うとDBに登録されたデータは文字化けしません。 上記文字化けの原因は、プラットフォームごとに設定されているデフォルトのエンコーディングで変換されてしまっているということでしょうか? また、Linux環境で文字化けしないでDBにデータを登録するにはどうしたらよいのでしょうか? 【環境】 Miracle Linux Oracle 10g

質問者が選んだベストアンサー

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.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]

参考URL:
http://java-house.jp/ml/archive/j-h-b/014452.html#body
rickgogo
質問者

お礼

教えていただいた方法で解決しました。 とても助かりました。 まだまだ勉強不足で「InputStreamReader」の存在すら知りませんでした。もっと経験を積まなくては!! どうもありがとうございました。

関連するQ&A