MSXML2.XMLHTTPでシフトJIS文字をPOSTするには?

解決


ツヨポン  2005-01-14 02:08:34  No: 118882

過去ログを参考にVB6でプログラムを作りました。
    Dim XMLHTTP As Object
    Dim URL As String
    Dim PostData As Variant

    URL = "http://test.hoge.co.jp/new.php"
    PostData="山田  太郎,ヤマダ  タロウ"
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    XMLHTTP.Open "POST", URL, False
    XMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    XMLHTTP.send PostData

    PHPのPOSTされたデータを見ると
    '螻ア逕ー縲?螟ェ驛?繝、繝槭ム縲?繧ソ繝ュ繧ヲ'
    と文字化けしております。
    PHP(サーバー)はSJISでコードは統一しています。

    PHPへVB6でSJIS文字列を渡したので教えて下さい。


魔界の仮面弁士  2005-01-14 03:19:33  No: 118883

>   '螻ア逕ー縲?螟ェ驛?繝、繝槭ム縲?繧ソ繝ュ繧ヲ'
『UTF-8形式のデータを Shift_JIS形式でデコードした時』には、
そのような結果になりますね。

> PHPへVB6でSJIS文字列を渡したので教えて下さい。
「内部処理形式がStringのVariant型」をsendすると、
文字列がUTF-8で送信されます。

この場合はStrConv関数を併用して、sendの引数に、
「内部処理形式がByte配列のVariant型」を渡してみてください。

sendメソッドのヘルプより引用
》 If the input type is a BSTR, the response is always
》 encoded as UTF-8.
(中略)
》 If the input type is a SAFEARRAY of UI1, the response
》 is sent as is without additional encoding. 

上記の BSTR というのは、VBのString型のことです。
"SAFEARRAY of UI1" は、Byte型の配列を意味します。


ツヨポン  2005-01-14 20:42:59  No: 118884

魔界の仮面弁士さま、情報ありがとうございます。
お教えいただいた内容でテストさせた頂きます。

自己レスです。
シフトJISコードをURLエンコードする関数を書きデータを
渡すことで問題解決することが出来ました。

魔界の仮面弁士さま始め、皆様の今までのお答え、大変役に立ち感謝しております。
皆様ありがとうございました。


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

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






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