一般mfc程式預設是unicode字符集的,字母和漢字都佔兩個位元組。
而多位元組字符集下,字母乙個位元組,漢字兩個位元組。
一般服務端採用utf-8編碼,這種情況下如果本地用unicode字符集,會造成兩邊資料不匹配,傳送到服務端的資料無法解析,服務端返回的資料也不能直接使用。
即使本地採用多位元組字符集,也無法在http請求中傳送中文(測試了英文可以)。
所以就需要手動處理資料,
傳送到服務端前先從unicode轉化為utf-8,服務端返回的資料先從utf-8轉為unicode再顯示在介面上
unicode轉utf-8
dword num = widechartomultibyte(cp_utf8, 0, strpostdata, -1, null, 0, null, null);//計算這個unicode實際由幾個utf-8字組成
cword = (char*)calloc(num, sizeof(char)); //申請空間
if (cword == null) //是否申請
memset(cword, 0, num*sizeof(char)); //初始化
widechartomultibyte(cp_utf8, 0, strpostdata, -1, cword, num, null, null);
printf("content長度為%d\n", strlen(cword));
utf-8轉unicode
/*utf8轉unicode*/
int unicodelen = multibytetowidechar(cp_utf8, 0, strrawresponse.c_str(), -1, null, 0);
wchar *punicode = new wchar[unicodelen + 1];
memset(punicode, 0, (unicodelen + 1)*sizeof(wchar_t));
multibytetowidechar(cp_utf8, 0, strrawresponse.c_str(), -1, punicode, unicodelen);
strresponse = punicode;//最終響應結果
//trace(strresponse + l"");
deletepunicode;
punicode = null;
寬位元組UTF 8 多位元組互轉
在進行windows程式設計時,常常遇到不同字元編碼之間的轉換以對應不同的輸出格式,本文介紹寬位元組utf 8編碼格式和多位元組之間的專案轉換。分別呼叫windows底層函式multibytetowidechar和 widechartomultibyte實現。1.utf 8轉多位元組 std str...
VC 多位元組寬字元相互轉換
多位元組寬字元相互轉換用的較多,自己寫了一點留作以後參考。string str cout please input chinese str setlocale lc ctype,chs const char cstr1 str.c str int len 2 sizeof cstr int wlen...
C 多位元組字元與寬位元組字元相互轉換
pragma once class strtransfer 字元型別 wchar t char 獲取字元長度 wcslen strlen 連線兩個字串 wcscat strcpy 複製字串 wcscpy strcpy 比較兩個字串 wcscmp strcmp 具體引數詳見www.linuxidc.c...