過去ログを参考に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文字列を渡したので教えて下さい。
> '螻ア逕ー縲?螟ェ驛?繝、繝槭ム縲?繧ソ繝ュ繧ヲ'
『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型の配列を意味します。
魔界の仮面弁士さま、情報ありがとうございます。
お教えいただいた内容でテストさせた頂きます。
自己レスです。
シフトJISコードをURLエンコードする関数を書きデータを
渡すことで問題解決することが出来ました。
魔界の仮面弁士さま始め、皆様の今までのお答え、大変役に立ち感謝しております。
皆様ありがとうございました。
ツイート | ![]() |