HTMLへのPOSTとバイト配列


お茶  2007-04-20 07:25:16  No: 98598

WinXP・VB6SP6の環境で、SquirrelMailというウェブメールのHTMLを操作するプログラムを作っています。

データはWebBrowserでPOSTするのですが、第4引数のPostDataはVarType(バイト配列)だということを知り、メーラーへのログインは以下のコードで解決しました。

****************************************
Dim strData As String
Dim lngData As Long
Dim bytData() As Byte

strData=(POSTする文字列)
lngData = Len(strData)
ReDim bytData(lngData) As Byte
For i = 0 To lngData - 1
    bytData(i) = Asc(Mid(strData, i + 1, 1))
Next

WebBrowser.Navigate2 URL, , , bytData
****************************************

しかし、上記はログインデータであるため、URLに対し、ID・パスワードである半角英数字の1バイト文字をPOSTしており、メール送信を行う際は、当然タイトル、内容に漢字、ひらがななどの2バイト文字が含まれるため、上記のコードではオーバーフローが起こります。

下記も参照したのですが解決策が思いつきません。ご教授願えますでしょうか。

****************************************
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200511/05110090.txt
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200405/04050020.txt


ガッ  2007-04-20 08:59:05  No: 98599

ADODB.Streamオブジェクトを使ってString型をShift-JISコード列にするとか
もっと安直にStrConv()関数を使うとかがあります

安直な例:
Dim v As Variant
Dim buf() As Byte
buf = StrConv("abcあいうdef", vbFromUnicode)
For Each v In buf
    Debug.Print Right$("0" & Hex$(v), 2);
Next

※最近VBやってないのでちょっとあやふや


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加