1.編碼方式(數字 -------------------> 代表什麼 ---------------> 顯示為什麼)
編碼(ascii,gbk,unicode)
字型檔案(編碼,點陣字型)
所謂的編碼,是用預先規定的方法將文字、數字或其他物件程式設計數碼。
ascii碼:用乙個位元組的低七位來表示英文本元、數字和其他一些符號。也就是
說我們看到的這些字元、數字在計算機中都有對應的碼值,例如字元'a'對應的
ascii碼為0x41.在當時使用ascii碼就可以解決所有的字符集。
國標碼(gbk):對於內陸人使用的是漢字,採用的是國標碼,使用兩個位元組來代表
乙個漢字。
unicode編碼:為了解決全世界統一的編碼方式,採用了unicode編碼,這個表給出
這個表給出了某個數值與字元的關係;某個數字**某個符號。而這個編碼表是
如何表示它呢?(比如說用3個位元組表示乙個unicode編碼,這種方法顯然是很浪費的)
因此如何來表示unicode編碼出現了多種方式:utf-8 utf-16
2.乙個例子
將含有abc字元的檔案依次儲存為ascii,utf-8,utf-16格式,然後用ue開啟,檢視
其內容。
ascii:
00000000: 61 62 63 ;abc 《使用乙個位元組進行編碼》
utf-8:
00000000: ef bb bf 61 62 63 ;abc
utf-16-le: 00000000: ff fe 61 00 62 00 63 00 ;abc 《使用兩個位元組來表示unicode編碼》
utf-16-be:
00000000: fe ff 00 61 00 62 00 63 ;abc
在以上檔案中加上"中"
ascii:
00000000: 61 62 63 d6 d0 ;abc 《使用乙個位元組進行編碼,使用國標碼》
utf-8:
00000000: ef bb bf 61 62 63 e4 b8 ad;abc
utf-16-le: 00000000: ff fe 61 00 62 00 63 00 4e 2d;abc 《使用兩個位元組來表示unicode編碼,為unicode編碼》
utf-16-be:
00000000: fe ff 00 61 00 62 00 63 2d 4e;abc
3.utf-8是如何來表示unicode?
中 : e4 b8 ad 11100100 10111000 10101101 是一種變長的儲存方式
第乙個位元組的前n位為1,n+1位為0表示用n個位元組來表示該字元的unicode編碼
後面的n-1個位元組的前2位都為10,剩下的這些值用來表示該字元的unicode值
由此可知"中"的unicode 0100111000101101
utf-8使用最普遍,其優點:
變長儲存
具有容錯性,即便出錯也只會導致若干個亂碼,如果是utf-16,其中乙個錯誤
會導致整個檔案遭到破壞。
4.乙個現象的分析?
當我們使用putc(char ch)從開發板的的串列埠發出乙個字元'a',是如何在我們
的windows終端顯示出'a'來的?
字元是以其ascii碼進行儲存的,因此通過串列埠線傳輸的實際上是字元'a'的
ascii碼0x41,而我們windows終端軟體接收到這個ascii碼時,如何顯示是要
通過查詢儲存在系統中的字型庫檔案,字型庫檔案中包括字元的碼值和字元的
字型點陣資料,通過查詢字型檔案最終將該碼值對應的字型點整資料顯示在螢幕
上。如何得知乙個字型檔案中含有字型編碼值?
我們設定ue中某個檔案的字型時,就會有字符集選擇,字符集就是字元編碼的
方式:當我們設定字型為黑體時,字符集中就有chinese_gb2312
5.乙個c源**用不同的(編碼方式)字符集儲存,會導致執行結果不一致?
這顯然是不應該出現的,解決方法:編譯程式時應該指定一些引數
finput charset= charset 表示原始檔的編碼方式,預設為utf-8來解析
fexec charset = charset 表示可執行程式裡的字元以什麼方式來解析,預設為utf-8
python學習筆記之字元編碼
最近在看 python核心程式設計第三版 wesley chun的書,在練習過程中發現第二章網路程式設計關於tcp和udp的例子在python 3.6.0 的環境下竟然無法正常執行,如是上網搜尋相關資料終於講問題弄明白了。參考資料 大體原因是python3.3之後python對字元處理做了比較大的改...
字元編碼筆記
在用python處理多個檔案的時候,裡面存有不同編碼,使用晚上copy的編碼判斷也不好使,而我的目的也很簡單,就是在第二行加入一串文字,比如123456.那麼,在不同編碼下是否能通過讀取二進位制位元組的方式判斷到 n呢?結論在我們中文編碼和utf8中,是可以的,實際上所有的非可見字元都是可以的編碼都...
字元編碼筆記
1.ascii碼和非ascii碼 ascii碼 我們知道,在計算機內部,所有的資訊最終都表示為乙個二進位制的字串。每乙個二進位制位 bit 有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為乙個位元組 byte 也就是說,乙個位元組一共可以用來表示256種不同的狀態,每乙個狀態對...