MFC程式寬位元組和UTF互轉

2021-07-09 02:53:43 字數 1236 閱讀 1275

一般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...