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

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





Taturou Mizuno wrote:

> 水野@xxxxxxxxxxタイムインターメディアです。
> > > ちょっと調べたら、8859_1というのは ISO 8859_1(Latin−1ともいう)のこと
> > > と解りました。つまり、これは、SJISをLatin-1に変換しているのです。
> > > s.getBytes("SJIS")というのは、String からSJISバイトコードを取り出している
> > > ので、Unicodeとは無関係のようです。
> > > それからこの関数をそのまま使うと最上位の8ビット目が桁落ちするようです。
> > それからUniCodeに変換する場合は、"SJIS"になっている所を"UniCode"に変えれ
> > ば ,いいのかもしれない。これから試してみます。
> 最終的にEncodeなしでいけました。
> 
> 原因は、どうも、2バイト文字列の長さを1文字と数えるStringクラスの仕様に
> JBuilder2が対応していないことにあるようです。
> 
> SQL文が途中でぶっちぎれていたようです。
> 
> 逃げ方は、いろいろあると思いますが、
> 
> StringBufferクラスを使用して、
> QueryStrBuf.setLength(QueryStr.getBytes("SJIS").length);
> とやるのがいいようです。
> 
> #さあこれからドキュメントだ。


どうやら混乱させてしまっただけの天野です。
ごめんなさーい。許してください _m( )m_

実は、JDBCの勉強をしたくて買った本
(http://www02.so-net.or.jp/~kikuta/jdbcnote/jdbcnote.html)
に、書いてあったメソッドを、参考になるのかな?、と思い、メソッドの意味が
よく分からなかったけど、うまくデータが取れていたから、安直にメールしちゃ
いました。

ML は、いろいろ議論する場であることは分かっても、あほなことを言っていた
と思うとさすがに恥ずかしい。

もっとも、間違っている訳ではなかったみたいですが、忙しそうな水野さんを困
らせてしまったらしい。
Java-House の ML でしっかり調べてからにしよう、と思ったのですが、悲しい
かな、テレホタイム以外は
時間が気になって集中できず、ものすごく適当なことをしてしまった。かさねが
さね、すいません。

それと少し気になったのですが、

Taturou Mizuno wrote:
> SQLがUniCodeで書かれていないとだめということです。

たとえば、SQL文を

sql_state = "SELECT * FROM hogehoge WHERE hogehoge2 = '日本語文字列 '";

とすると、

sql_state = new String("SELECT * FROM hogehoge WHERE hogehoge2 = '日本語
文字列 '");

で String オブジェクトを JavaVMが作り出す?( ここら辺の知識も怪しい )と
思うので、
sql_state は元々 UniCode なのでは?、と思うのですが、やっぱり WIN環境で
コンパイルすると
SJISになるのでしょうか、そうなると マルチプラットホームでなくなるような
気が・・
んー、わからない。他力本願ですが、どなたか詳しい人いませんか?

それと、僕が結構あほな奴、ということがばれてしまったので、
今度は遠慮なくあほな質問をさせていただきます

では、ごきげんよう

-- masahiro AMANO