[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: [jfriends] JDBCと日本語




始めまして天野と申します
しばらくROMだった訳ですが答えられそうなもの
を見つけたのでメールいたしましたs。

Taturou Mizuno wrote:

> 水野@xxxxxxxxxxタイムインターメディアです。
> JDBCで日本語が含まれているQueryを実行するとエラーになるという現象が発生し
> ていますが、そもそも、JDBCは日本語には対応していないのでしょうか?
もしかしたら外しているかもしれませんが、Windows環境なら文字コードの違い
により
データベースに直接Unicodeを投げてしまうからだと思います、たぶん・・・。
あまり自信ないです。
ですからクエリー文の中の日本語文字列をシステムの文字コードにエンコードし
てから
実行すればいいような気がします・・・

下記のようなメソッドを使用してエンコードされた文字列でクエリーを実行すれ
ばよいと思います。

	protected String SJIStoUnicode(String s){
            if(s == null){
                return "";
            }
            try{
                return new String(s.getBytes("8859_1"),"SJIS");
            } catch(UnsupportedEncodingException e){
                return s;
            }
        }
	protected String UnicodeToSJIS(String s){
            if(s == null){
                return "";
            }
            try{
                return new String(s.getBytes("SJIS"),"8859_1");
            } catch(UnsupportedEncodingException e){
                return s;
            }
        }

それと JavaHouseのメーリングリストを「JDBC」で調べた結果、
以下のようなものを発見したので参考にしてください。

>日本語が出力されないのはJDBCでとってきた文字列が8bitずつ分解されて
>しまうからです。[JavaHouse-Brewers:9833]で関さんが具体的に説明されています。
>getStringでとってきた文字列はSJISなのでunicodeに変換しないとprintlnで
>出力すると文字化けします。変換クラスはJava-FAQに載っているそうですが,
>[JavaHouse-Brewers:8928]でも小林さんが紹介されています。ただし、これらの
>クラスでは半角カタカナが文字化けするそうなので,これまた小林さんが
>[JavaHouse:5294]で対応策を紹介されています。

JavaHouseのメーリングリストで「初心者用に作りました」と書いてあったので
即座に入りましたが、swap()関数なんて初心者に必要なのだろうか、と思いつつ
回答する人、質問する人が初心者ではないような気もする今日このごろ・・・
(^^;)
結構勉強になるので全部目を通していますが、内容が難しいのであまり理解でき
ていません。

Javaを勉強し始めて1年位、といっても独学なため、あまり勉強していないし理
解できていないのが現状ですが・・・
最近、現状を打開する為、Javaでメーラを作ろうと頑張っています。と、いって
も普通のメーラーを作っても面白くないので
PostPetをかなりあほにした、お遊びメーラを作る予定です(^^;;;)
どなたか興味があったら教えてくださいな。


非力ながら参考になればと、メールしました。
参考にならなかったらごめんなさい。

では、お元気で

-- masahiro AMANO