2016-04-09 65 views
0

CHttpFile :: SendRequest kullanarak bir form göndermek ve bu verileri bir mysql veritabanına kaydetmek istiyorum. DB tablo harmanlama içindeki alan da utf8mb4_unicode_ci olarak ayarlanır.HttpFile :: SendRequest ve karakter kodlaması

İngilizce dışındaki karakterlerin karakter kodlaması dışında iyi çalışır. Uygulamam MFC altında ve "karakter kümesi" ASCII anlamına gelen bir ayardır. Başarı göstermeden karakterleri unicode'a dönüştürmeye çalıştım.

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)); 

Burada yanlış olan ne yapıyorum? html formu var

+0

Burada sadece üç satırlık kod ile yanlış gidenleri söyleyin. –

+1

* Karakter Kümesi * * Ayarlanmamışsa *, kodlama varsayılan olarak ASCII değil ANSI'ye ayarlanır. "A2W" makrosu, bir ANSI dizesini UTF-16 Unicode dizesine doğru şekilde dönüştürür. Görünüşe göre, UTF-8'e ihtiyacınız var. [MultiByteToWideChar] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd319072.aspx), ANSI'den UTF-16'ya ve ardından [WideCharToMultiByte] (https: // msdn. microsoft.com/en-us/library/windows/desktop/dd374130.aspx) UTF-16'dan UTF-8'e dönüştürmek için. ANSI'den UTF-8'e doğrudan dönüştüremezsiniz. – IInspectable

+1

Evet ANSI, hatam için üzgünüm. Her neyse, işi tamamlamak için bir adım daha attığımı söylüyorsun. Geniş char'u multi byte'a dönüştürmek için. Sağ ? Soru utf-16 = geniş char utf-8 = multibyte? Burada biraz kafam karıştı. – Maverick

cevap

0

İçinde PHP dosyası, ben bu sorunu çözdü kodu

mysqli_set_charset($con, "utf8"); 

eklendi.

herkese teşekkürler.