1.ASCII
二進制和英文字母(也就是拉丁文)的對應表,標準 ASCII 編碼共收錄了 128 個字符,其中包含了 33 個控制字符(具備某些特殊功能可是沒法顯示的字符)和 95 個可顯示字符。每一個字符佔用1個字節。並且只會用到較低的7位,有一位被空閒。html
2.GBK
中文字符編碼集,兼容ASCII編碼,ASCII字符仍是佔用一位,漢字佔用兩位。ide
3.Unicode
統一碼,萬國碼。是一個字符集編碼
unicode有三種編碼方式:spa
- UFT-8:一種變長的編碼方案,使用 1~6 個字節來存儲;
- UFT-32:一種固定長度的編碼方案,無論字符編號大小,始終使用 4 個字節來存儲;
- UTF-16:介於 UTF-8 和 UTF-32 之間,使用 2 個或者 4 個字節來存儲,長度既固定又可變。
只有 UTF-8 兼容 ASCII,UTF-32 和 UTF-16 都不兼容 ASCII,由於它們沒有單字節編碼。操作系統
4.c語言中的寬窄字符
c語言在處理英文字符時使用ascii編碼,佔用一個字節,稱爲窄字符。char a = 'A'.net
處理中文等其餘語言的字符時使用UTF-16 或UTF-32編碼,佔用兩個或四個字節 ,字符類型是wchar_t w是wide,t是typecode
wchar_t b = L'中'htm
注:字節定義使用單引號ci
詳細查看:http://c.biancheng.net/cpp/html/3424.htmlunicode
5.c語言編碼問題
- 窄字符使用ascii編碼
- 寬字符,寬字符串使用 UTF-16或 UTF-32
- 窄字符串使用編碼狀況和操做系統和編譯器有關,微軟編譯器使用本地編碼,GCC、LLVM/Clang 使用和源文件編碼相同的編碼。中國來講使用GBK 或者 UTF-8 編碼。