プロが教えるわが家の防犯対策術!

Linux環境でSJISファイルから読み込んだデータをDBに登録するとデータが文字化けしてしまいます。

Windows環境で同じ処理を行うとDBに登録されたデータは文字化けしません。

上記文字化けの原因は、プラットフォームごとに設定されているデフォルトのエンコーディングで変換されてしまっているということでしょうか?

また、Linux環境で文字化けしないでDBにデータを登録するにはどうしたらよいのでしょうか?

【環境】
Miracle Linux
Oracle 10g

A 回答 (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.htm …
    • good
    • 0
この回答へのお礼

教えていただいた方法で解決しました。
とても助かりました。

まだまだ勉強不足で「InputStreamReader」の存在すら知りませんでした。もっと経験を積まなくては!!

どうもありがとうございました。

お礼日時:2005/10/23 03:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!