就非西歐字元而言,比如中國以及港澳台,在任何程式語言的開發中都不得不考慮字符集及其表示。在c++中,對於超過1個位元組的字元,有兩種方式可以表示:
1、多位元組表示法;通常用於儲存(空間效率考慮)。
2、寬字元表示法,通常用於程式中(效能考慮)。
目前最主要或最常見的字符集應該來說包括:
ascii,7位。
iso-latin-1/iso-8859-1,8位。
ucs-2,16位定長。
utf-8,8-32位變長。
utf-16,16或32位變長。
ucs-4/utf-32,32位定長。
對於特定的字元,各編碼格式所佔的位元組數和編碼值如下:
說到utf-16/utf-32,不得不說bom(byte order mark),它的作用跟網路程式設計中的位元組碼順序概念一樣,用於標識使用big endian或者little endian。
無bom的位元組流開始:
帶bom的位元組流開始:
在c++中,並沒有原生支援gbk/gb18050/utf-8的編碼,如下:
基本上廣泛用的就是char和wchar_t。
對於常規控制台輸入的,基本上網上很多demo了,所以接下去來看下從檔案或者網路socket端過來的utf-8或者gbk編碼如何處理的。
C 中處理字符集與常見字符集介紹
c 提供不同的字元型別用以應付前述字符集 char可被用於所有8bit以下的字符集,例如us ascii iso latin 1和iso latin 9。此外它可被用於utf 8的8bit值。char16 t 始自c 11 可被用於ucs 2,也可用於utf 16的code unit。char32 ...
中文字符集
gb2312 1980年 16位字符集,收錄有6763個簡體漢字,682個符號,共7445個字元。優點 適用於簡體中文環境,屬於中國國家標準,通行於大陸,新加坡等地也使用此編碼 缺點 不相容正體中文,其漢字集合過少。gbk 1995年 16位字符集,收錄有21003個漢字,883個符號,共21886...
oracle 檢視字符集與修改字符集
oracle字符集是乙個位元組資料的解釋的符號集合,有大小之分,有相互的包容關係。oracle 支援國家語言的體系結構允許你使用本地化語言來儲存,處理,檢索資料。它使資料庫工具,錯誤訊息,排序次序,日期,時間,貨幣,數字,和日曆自動適應本地化語言和平台。影響oracle資料庫字符集最重要的引數是nl...