2016-04-09 9 views
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フォームが存在する

+0

難しいことは、わずか3行のコードでここで間違っていると言います。 –

+1

*文字セット*が*設定されていない*の場合、エンコーディングのデフォルトは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

+1

はいANSIは間違いのために申し訳ありません。とにかく私は仕事を完了するためのもう一つのステップがあると言います。ワイド文字をマルチバイトに変換する。右 ?質問utf-16 =ワイド文字の間にutf-8 =マルチバイトですか?私はここで少し混乱しています。 – Maverick

答えて

0

インサイドPHPファイルには、私はこれが問題を解決し、コード

mysqli_set_charset($con, "utf8"); 

を追加しました。

ありがとうございます。

関連する問題