dポイントプレゼントキャンペーン実施中!

WindowsのサーバーでデータベースはMySQLです。今回、Linuxのサーバーからもダイレクトにデータを取得(SQLのselect文)しWindowsのサーバーへデータの書込みを行ったりLinux側へデータ書込みを行うことになりました。
そこでEUC,SJISの文字列変換なのですが、レコードセットなどSelect文でEUCのデータを取得するとSQLでエラーになったり正常に値が取得できません。NKF32でテキストファイル間では変換できるのですが、直接テーブルからデータを取得しEUCまたはSJIS変換をおこないSQLで書込みを行うことはやはりVBでは無理なのでしょうか。ご経験又は知識
をお持ちの方ご教示板だければ幸いです。

A 回答 (2件)

ADODB.Stream


で対応できると思います。

http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2004 …
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
お返事が遅れてしまい申し訳ございません。
早速試してみました。
以下のケースでzzzzテーブルのfield_aはEUCの文字列が格納されています。
このフィールドをレコードセットで取得しSjisに変換かけ
最終的に他のテーブルに書き込む処理を行いたいのです。

いかのようにコードをかいてみましたが思うような結果が得られません。ご教示くだされば幸いです。

Dim Stm As ADODB.Stream
Dim Stm2 As ADODB.Stream
Dim moji As String

mySql = "select * from zzzzz"
rsWksql.Open mySql cn2,adOpenStatic,adLockReadOnly

'JISコードのストリームを作成
Set Stm = New ADODB.Stream
Stm.Open
Stm.Type = adTypeText
Stm.Charset = "EUC-JP" 'あるいは"Shift_JIS"や"EUC-JP"とか

'文字列を格納
Stm.WriteText rsWksql("field_a")

Dim B() As Byte
Stm.Position = 0
Stm.Type = adTypeBinary
B = Stm.Read()

Set Stm2 = New ADODB.Stream
Stm2.Open
Stm2.Type = adTypeBinary
Stm2.Write B

Stm2.Position = 0
Stm2.Type = adTypeText
Stm2.Charset = "Shift_JIS"
moji = Stm2.ReadText()

MsgBox moji

'ストリームの破棄
Stm.Close
Set Stm = Nothing

End Sub

お礼日時:2006/06/24 10:21

問題が SELECT 文にセットするキーワードの文字コードセットが異なるために起きているなら、キーワードを変数に代入したあとコードセットを変換し、それから SELECT 文を発行すればよいと思います。



見当はずれな指摘でしたら、あしからず。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
正確に記すとSQLでEUCの値を取得した後、VBのアプリケーション内で値を認識した時にVBではunicodeを使用しているためEUCを認識できず既にその時点で文字化けが発生してしまっているようです。
これは避けられないのでしょうか・・・。

お礼日時:2006/06/19 08:55

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