プロが教えるわが家の防犯対策術!

VBScriptでSJISの文字列を、UTF8に変換し、
UTF8で設定されたMySQLへ保存したい。

SJISをUTF8に変換する関数をご教授いただきたいです。

以下をまるまるコピーさせていただき試してみたのですが、
文字化けしたメッセージが返されます。

Function TextToBin(TextData, CharSet)
Const adTypeBinary = 1
Const adTypeText = 2
Dim objStream
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = adTypeText
objStream.Charset = CharSet
objStream.Open
objStream.WriteText TextData
objStream.Position = 0
objStream.Type = adTypeBinary
Select Case UCase(CharSet)
Case "UNICODE","UTF-16"
objStream.Position = 2
Case "UTF-8"
objStream.Position = 3
End Select
TextToBin = objStream.Read
objStream.Close
Set objStream = Nothing
End Function

msgbox TextToBin("テスト","UTF-8") ←文字化ける
msgbox TextToBin("テスト","UTF-16") ←文字化けない

A 回答 (3件)

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

「VBScriptではバイナリデータを標準出力することが出来ないみたいです(テキストなら出来る)。

また、直接的な変換関数もなく、Asc,Hex,Valを組み合わせば出来そうなのですが・・・出来なかったです。」

とあるということは、やはり、無理なんですね

お礼日時:2013/01/27 15:07

CScript.exeの リダイレクトでUnicodeを使用するオプションが //Uで提供されています



cscript sample.vbs //U > conv.txt
としてやると UTF-8のほうは ちゃんと変換されるようです

同じように MySQLに対するコマンドに対し パイプを使えばうまくいくのかも … 未確認

cscript sample.vbs //U | [MySQLのコマンド]

... 参考になれば幸いです

この回答への補足

test.vbsに質問の内容を記入し、
以下を実行してみましたが、
「cscript test.vbs//U」
メッセージボックス内容が文字化けしました。

せっかくご教授いただいたにもかかわらず、
私の知識が乏しく理解ができず申し訳ございません。

補足日時:2013/01/27 20:24
    • good
    • 0

なんかベクターで見かけたな。



http://www.vector.co.jp/soft/win95/util/se319987 …

http://www.vector.co.jp/soft/winnt/util/se429977 …

参考になると思いますよ

この回答への補足

早々のご回答ありがとうございます。

ファイル変換でのUTF8エンコードでなく、
文字列をエンコードするのは、
そもそも無理なことなのでしょうか?

補足日時:2013/01/27 14:50
    • good
    • 0

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