WindowsのサーバーでデータベースはMySQLです。今回、Linuxのサーバーからもダイレクトにデータを取得(SQLのselect文)しWindowsのサーバーへデータの書込みを行ったりLinux側へデータ書込みを行うことになりました。
そこでEUC,SJISの文字列変換なのですが、レコードセットなどSelect文でEUCのデータを取得するとSQLでエラーになったり正常に値が取得できません。NKF32でテキストファイル間では変換できるのですが、直接テーブルからデータを取得しEUCまたはSJIS変換をおこないSQLで書込みを行うことはやはりVBでは無理なのでしょうか。ご経験又は知識
をお持ちの方ご教示板だければ幸いです。
No.2ベストアンサー
- 回答日時:
アドバイスありがとうございます。
お返事が遅れてしまい申し訳ございません。
早速試してみました。
以下のケースで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
No.1
- 回答日時:
問題が SELECT 文にセットするキーワードの文字コードセットが異なるために起きているなら、キーワードを変数に代入したあとコードセットを変換し、それから SELECT 文を発行すればよいと思います。
見当はずれな指摘でしたら、あしからず。
アドバイスありがとうございます。
正確に記すとSQLでEUCの値を取得した後、VBのアプリケーション内で値を認識した時にVBではunicodeを使用しているためEUCを認識できず既にその時点で文字化けが発生してしまっているようです。
これは避けられないのでしょうか・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- UNIX・Linux サーバー間のデータコピー(データ形式とデーターフォーマットの変換あり。一定間隔で処理) 2 2023/08/22 22:15
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) エクセルVBA 3 2022/06/23 20:00
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
「彡」って文字はなんという文...
-
VS 2008(VB.NET)
-
std::stringからLPCWSTR型への変換
-
COBOLによる全角・半角混...
-
ExcelVBA実行後に時々落ちる
-
セル内の文字列が日本語か英語...
-
ふりがなをアルファベット化す...
-
RubyでUTF8のコード値を文字に...
-
pandas str型→int型変換
-
CSVをVB(input)で読み込んだ場...
-
Excelマクロにて30分単位の計算...
-
C言語でUTF-8コードで読み込ん...
-
数字5桁文字コード?
-
S-JIS → JIS コード変換するには
-
C#で16進数からASCIIへの変換の...
-
latin-1 (ISO-8859-1)への変換
-
VBでIMEの変換文字列を拾いたい
-
文字列の最初の0(ゼロ)を取...
-
工作機械データの可読性
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EBCDIC⇒SJIS変換の方法
-
セル内の文字列が日本語か英語...
-
「彡」って文字はなんという文...
-
友人とのラインで 「~MBと書く...
-
std::stringからLPCWSTR型への変換
-
英数字を含む文字列(0-9,A-Z)...
-
ExcelVBA実行後に時々落ちる
-
Excelマクロにて30分単位の計算...
-
ふりがなをアルファベット化す...
-
sedで日本語の置換方法について
-
S-JIS → JIS コード変換するには
-
VS 2008(VB.NET)
-
COBOLによる全角・半角混...
-
Symfowareでのデータ型変換につ...
-
CString ←→ BSTRの変換について
-
JIS → S-JIS コード変換するには
-
2バイト文字をJEFからSJISに変...
-
EBCDICをASCIIに変換したい
-
フォームのコントロールのバッ...
-
EBCDICへの変換
おすすめ情報