VisualStudio2008およびWindows7Professional32ビットのC++でlibcurlを使用して、UTF-8文字を含む要求を送信していますが、問題は、そのエンコードエラーが発生することです。
�abe
の代わりにçabe
。
ローカルホストサーバーでテストしているときに気付いたことが1つあります。これは、このようなPHPサーバーで最初に受信したものecho $_POST['post'];
です�abe
が、エンコードすると正しくecho utf8_encode($_POST['post']);
なりçabe
ます。
ただし、データを受信するサーバーを制御できないため、UTF-8でエンコードされたデータを送信したいと思います。
どうすればそれができますか?
これが私の投稿部分です
struct curl_httppost *formpost=NULL;
struct curl_httppost *lastptr=NULL;
std::string post = "çabe";
url_formadd(&formpost,
&lastptr,
CURLFORM_COPYNAME, "post",
CURLFORM_COPYCONTENTS, post.c_str(),
CURLFORM_END);
@編集
DietrichEppによると、UTF-8がオンになっているかどうかを確認するには、例「ç」で別の文字の長さをテストするだけなので、試してみprintf("%d\n", (int) strlen("ç"));
ました。UTF-8の場合は2または3、UTF-8の場合は1が出力されます。他の何か。
そしてそれは1を印刷しました、それが理由かもしれません、どうすればこれを修正できますか?
cURLのpostフィールドで使用する場合は、UTF-8に設定するか、少なくともutf8に設定する関数を配置できるようにします。