如何把UTF 8轉為GB2312的

2021-06-19 14:02:38 字數 611 閱讀 5467

目前很多的中文網頁都採用utf-8或gb2312編碼,utf-8和gb2312都是字符集的編碼,具體格式這裡不做討論,這裡主要是看看如何用把utf-8轉為gb2312的。在vc的開發平台裡utf-8漢字會顯示成亂碼,需要轉換成gb2312才能顯示。

大概的思路是這樣的,先把utf8轉換成unicode,再把unicode轉換成gb2312,為什麼會這樣想呢,因為windows api裡提供了多位元組轉寬位元組(multibytetowidechar),寬位元組轉多位元組(widechartomultibyte)的方法。好了,下面是具體的api使用:multibytetowidechar(cp_utf8, 0, (lpctstr)pin,inlen, pwchar, len),第乙個引數是cp_utf8,這樣就把utf8轉成unicode了。你再用widechartomultibyte就能把unicode轉成 gb2312了。

如果你是在mfc下,,直接用cstring構造就能把unicode轉成gb2312,建構函式是有型別轉換功能滴。。。

函式原始碼,vc6編譯通過:

bool utf8_2_gb2312(const void * pin,int inlen,char *pout,int *outlen )

gb2312和UTF 8的區別

gb2312編碼大約包含6000多漢字 不包括特殊字元 編碼範圍為第一位b0 f7,第二位編碼範圍為a1 fe 第一位為cf時,第二位為a1 d3 計算一下漢字個數為6762個漢字。當然還有其他的字元。包括控制鍵和其他字元大約7573個字元編碼 gbk編碼是對gb2312編碼的擴充,容納的漢字更多,...

GB2312 和 UTF 8的區別

本文 gb2312編碼大約包含6000多漢字 不包括特殊字元 編碼範圍為第一位b0 f7,第二位編碼範圍為a1 fe 第一位為cf時,第二位為a1 d3 計算一下漢字個數為6762個漢字。當然還有其他的字元。包括控制鍵和其他字元大約7573個字元編碼 gbk編碼是對gb2312編碼的擴充,容納的漢字...

GB2312和utf8編碼轉換

經常的寫中文出現亂碼,用編碼器翻譯在粘上去,有的還翻譯不過去。還是用翻譯函式吧 gb2312轉換成utf 8 utf iconv gb2312 utf 8 request keyword 將字串utf 8碼轉換為gb2312碼 str iconv utf 8 gb2312 translit str ...