字元編碼之間的轉換

2021-07-25 16:03:30 字數 1484 閱讀 6581

在嚴格的ascii中,每個字元用7位元表示,一共規定了128個字元的編碼;

unicode拓展自ascii字符集,使用全16位字符集,可以表示全世界上所有的書寫語言中可能用於電腦通訊的字元、象形文本和其他符號。但不支援一些古老的文字。

utf-8是一種針對unicode的可變長寬字元編碼,又稱為萬國碼(通用轉換格式)。utf-8用1到4位元組編碼unicode字元。用在網頁上可以統一顯示中文繁體及其他語言(如英文、日文、韓文)。對可以用ascii表示的字元使用unicode並不高效,因為unicode比ascii多一倍空間。為解決這個問題,出現了中間格式的utf-8。

gb2313是ansi編碼中里的一種,是簡體中文編碼字符集。

補充:不同國家和地區制定了不同的標準,由此產生gb2313、big5等各自的編碼標準。這些使用2個位元組來代表乙個字元的各種漢字延伸編碼方式,稱為ansi編碼。

void ansitounicode()

// gb2312

到utf-8的轉換

char* g2u(const

char* gb2312)

{int len = multibytetowidechar(cp_acp, 0, gb2312, -1, null, 0);

wchar_t* wstr = new

wchar_t[len + 1];

memset(wstr,0, len + 1);

multibytetowidechar(cp_acp,0, gb2312, -1, wstr, len);

len= widechartomultibyte(cp_utf8, 0, wstr, -1, null, 0, null, null);

char* str = new

char[len + 1];

memset(str,0, len + 1);

widechartomultibyte(cp_utf8,0, wstr, -1, str, len, null, null);

if (wstr) delete wstr;

return str;

// gb2312 to unicode

int wlen = multibytetowidechar(cp_acp, 0,lpsztext, -1, null, 0);

lpwstr wstr = new wchar[wlen];

multibytetowidechar(cp_acp, 0, lpsztext,-1, wstr, wlen);

// unicode to gb2312

int alen2 = widechartomultibyte(cp_acp, 0,wstr2, -1, null, 0, null, null);

char* converted2 = new

char[alen2];

widechartomultibyte(cp_acp,0, wstr, -1, converted2, alen2, null, null);

中文編碼之間的轉換

主要思想 先將一種編碼用multibytetowidechar函式變為unicode編碼,再用widechartomultibyte函式變為另一種編碼。multibytetowidechar 一 函式功能 該函式對映乙個字串到乙個unicode字串。二 函式原型 int multibytetowid...

字元編碼的轉換

編碼轉換是指將一種編碼轉成另一種編碼,比如utf 8轉成gbk。為什麼需要編碼轉換?因為不同作業系統編碼不同,utf 8在win上沒法直接看,因為windows是gbk編碼的,需要轉成gbk才行。如果你的bgk字元想在linux mac上正常顯示,就得轉成utf 8.s 小明 在python3中,記...

字元編碼轉換

這幾天在做個東西,就是關於網路字元編碼轉換的問題,此前這方面一點兒也不懂,頭要的急所以從快入手,先上網了解了一下字元編碼到底是什麼東西,於是知道了內碼轉換,gb2312,big5,unicode等東西,不懂的可以從網上搜搜,我也是搜的,建議大家先看看這個 http www.vckbase.com d...