[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00017] Re: データベースからの得たデータの文字コード変換
On Sat, 23 Nov 2002 15:12:19 +0900 , Yoshiyasu Hayashi wrote:
> >これって、SJIS文字列をEUC_JPに変換してません?
> >String sound = new String(sound_e.getBytes("EUC_JP"), "SJIS");
> >でもダメですか?
> すいません逆でした。でもコンソールの表示はやはり8859_1変換されてしまい表
> 示はかわりませんでした。
> String sound = new String(sound_e.getBytes("EUC_JP"), "SJIS");で
> SJIS,JISAutoDetect,EUC_JP,EUCJIS,Unicode,8859_1,MS932など色々組み合わせ
> てやってみたもののうまくSJISに変換されません。
すみません。私の説明も間違っていました。
上記コードは、EUC_JPのバイト列を無理矢理SJISで読み込もうとしてい
るため、あなたの期待通りに動作しないでしょう。つまり、単に文字列
を表示したいのであれば、sound_eを表示すれば良いです。
上記でEUC_JPのバイト列を取得して表示した結果は、"B8FAB2CCB2BB41"
と正しく表示されていますよね?つまり、遠藤さんの指摘通り、
> MySQL の上では EUC-JP のようですが、JDBC 内部は Unicode に変換されます。
が正常に行われていると思われます。
String sound = new String(sound_e.getBytes("EUC_JP"), "SJIS");
System.out.println("trace :" + Tracer.toHex(sound.getBytes()));
は、
System.out.println("trace :"+
Tracer.toHex(sound.getBytes("SJIS")));
とすれば、あなたの期待通りに動作するのでは?
> 最初WindowsXPで開発し、動作させたときは文字コードを意識しなくても
> うまくいったのですが、Linuxで再開発するとやはり文字化けを起こしました。
Windows環境とUnix環境のデフォルトのfile.encodingの設定の違いによ
り上手くいかなかった可能性がありますが、コンソールに表示するサン
プルプログラムしか提示されていないので、実際の所はどこがいけない
のかは分かりません。
SJISにしたいということがよく分からないのですが、OutputStreamに対
してsound.getBytes("SJIS")で取得したバイト列を直接書き出せば出来
ません?
---
石神 覚司(Satoshi Ishigami) VIC TOKAI CORPORATION