一、字元編碼簡史: 美國:1963年 ASCII (包含127個字元 占1個位元組) 中國:1980年 GB2312 (收錄7445個漢字,包括6763個漢字和682個其它符號) 1993年 GB13000 (收錄20902個漢字) 1995年 GBK1.0 (收錄 21003個漢字) 2000年 G ...
一、字元編碼簡史:
美國:1963年 ASCII (包含127個字元 占1個位元組)
中國:1980年 GB2312 (收錄7445個漢字,包括6763個漢字和682個其它符號)
1993年 GB13000 (收錄20902個漢字)
1995年 GBK1.0 (收錄 21003個漢字)
2000年 GB18030 (收錄70244個漢字)
世界:1991年 unicode(‘萬國碼’也就統一編碼,通常占2位元組,複雜的漢字占4位元組)
UTF-8 (可變長的字元編碼)
二、python中的編碼解碼應用
Python2中的字元串進行字元編碼轉換過程是:
位元組串-->decode('原來的字元編碼')-->Unicode字元串-->encode('新的字元編碼')-->位元組串
#!/usr/bin/env python # -*- coding:utf-8 -*- utf_8_a = '測試' print(utf_8_a,type(utf_8_a),len(utf_8_a)) #列印utf_8_a的內容、類型及長度 unicode_a = utf_8_a.decode('utf-8') #對utf_8_a進行解碼成unicode print(unicode_a,type(unicode_a),len(unicode_a)) gbk_a = utf_8_a.decode('utf-8').encode('gbk') #先解碼在編碼成gbk print(gbk_a,type(gbk_a),len(gbk_a)) #列印gbk_a的記憶體、類型及長度 print(gbk_a.decode('gbk')) ---------------------------------------------------- pytharm(python2.6)運行結果: ('\xe6\xb5\x8b\xe8\xaf\x95', <type 'str'>, 6) (u'\u6d4b\u8bd5', <type 'unicode'>, 2) ('\xb2\xe2\xca\xd4', <type 'str'>, 4) 測試
Python3中定義的字元串預設就是unicode,因此不需要先解碼,可以直接編碼成新的字元編碼:
字元串-->encode('新的字元編碼')-->位元組串
#!/usr/bin/env python # -*- coding:utf-8 -*- utf_8_a = '測試' print(utf_8_a,type(utf_8_a),len(utf_8_a)) #列印utf_8_a的內容、類型及長度 gbk_a = utf_8_a.encode('gbk') print(gbk_a.decode('gbk'),type(gbk_a),len(gbk_a)) -------------------------------------------------------- pycharm(python3.6)運行結果: 測試 <class 'str'> 2 測試 <class 'bytes'> 4
註:關於字元與位元組的理解 猛擊這裡
三、參考文檔:
http://www.cnblogs.com/magicsoar/p/4981701.html
http://www.cnblogs.com/alex3714/p/4296002.html
http://www.cnblogs.com/zhangqigao/p/6496172.html