編碼問題

1.ASCII

二進制和英文字母(也就是拉丁文)的對應表,標準 ASCII 編碼共收錄了 128 個字符,其中包含了 33 個控制字符(具備某些特殊功能可是沒法顯示的字符)和 95 個可顯示字符。每一個字符佔用1個字節。並且只會用到較低的7位,有一位被空閒。html

2.GBK

中文字符編碼集,兼容ASCII編碼,ASCII字符仍是佔用一位,漢字佔用兩位。ide

3.Unicode

統一碼,萬國碼。是一個字符集編碼

unicode有三種編碼方式:spa

  1. UFT-8:一種變長的編碼方案,使用 1~6 個字節來存儲;
  2. UFT-32:一種固定長度的編碼方案,無論字符編號大小,始終使用 4 個字節來存儲;
  3. 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語言編碼問題

  1. 窄字符使用ascii編碼
  2. 寬字符,寬字符串使用 UTF-16或 UTF-32
  3. 窄字符串使用編碼狀況和操做系統和編譯器有關,微軟編譯器使用本地編碼,GCC、LLVM/Clang 使用和源文件編碼相同的編碼。中國來講使用GBK 或者 UTF-8 編碼。
相關文章
相關標籤/搜索