0
CHttpFile :: SendRequestを使用してフォームを送信し、それらのデータをmysqlデータベースに保存したいとします。 DBテーブル照合内のフィールドもutf8mb4_unicode_ciに設定されています。HttpFile :: SendRequestと文字エンコーディング
英語以外の文字の文字エンコード以外は問題ありません。私のアプリはMFCの下にあり、「文字セット」はASCIIを意味する設定されていません。私は文字をUnicodeに変換しようとしましたが成功しませんでした。
CString strFormData;
strFormData = _T(SUBMIT_FORM) + _T(strSubmitValue) + _T(USERNAME_FIELD) + _T(m_strUsername) + _T(RESTORE_EMAIL_FIELD) + _T(m_strRestoreEmail) + _T(CAPTCHA_FIELD);
LPWSTR lpUnicodeFormData = A2W(strFormData);
strHeaders = _T("Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\n");
result = pFile->SendRequest(strHeaders, (LPVOID) (LPCTSTR) lpUnicodeFormData, wcslen(lpUnicodeFormData));
私はここで間違っていますか? htmlフォームが存在する
難しいことは、わずか3行のコードでここで間違っていると言います。 –
*文字セット*が*設定されていない*の場合、エンコーディングのデフォルトはASCIIではなくANSIになります。 'A2W'マクロは、ANSI文字列をUTF-16 Unicode文字列に変換します。あなたがUTF-8を必要としている(と約束している)ようです。 [WideCharToMultiByte](https:// msdn)に続いてANSIからUTF-16に変換するには、[MultiByteToWideChar](https://msdn.microsoft.com/en-us/library/windows/desktop/dd319072.aspx)が必要です。 microsoft.com/en-us/library/windows/desktop/dd374130.aspx)を使用して、UTF-16からUTF-8に変換します。 ANSIからUTF-8に直接変換することはできません。 – IInspectable
はいANSIは間違いのために申し訳ありません。とにかく私は仕事を完了するためのもう一つのステップがあると言います。ワイド文字をマルチバイトに変換する。右 ?質問utf-16 =ワイド文字の間にutf-8 =マルチバイトですか?私はここで少し混乱しています。 – Maverick