字符編碼與轉碼
http://www.cnblogs.com/yuanchenqi/articles/5956943.html
http://www.diveintopython3.net/strings.html
需知:
1.在python2默認編碼是ASCII, python3里默認是unicode
2.unicode 分為 utf-32(占4個字節),utf-16(占兩個字節),utf-8(占1-4個字節), so utf-16就是現在最常用的unicode版本, 不過在文件里存的還是utf-8,因為utf8省空間
3.在py3中encode,在轉碼的同時還會把string 變成bytes類型,decode在解碼的同時還會把bytes變回string
上圖僅適用於py2
在python2 中嘗試一下
# -*- coding: utf-8 -*-
s="你好"
print(s) python2 打印默認編碼: [root@liang ~]# cat b.py #-*- coding:utf-8 -*-
import sys print(sys.getdefaultencoding()) [root@liang ~]# python b.py
ascii
從utf-8 轉換到gbk
#s_to_gbk=s.docode("utf-8").encode("gbk") # -*- coding: utf-8 -*-
s="你好" s_to_gbk=s.decode("utf-8").encode("gbk") print(s_to_gbk)
gbk轉為utf-8
# -*- coding: utf-8 -*-
s="你好" s_to_gbk=s.decode("utf-8").encode("gbk") print(s_to_gbk) gbk_to_utf8=s_to_gbk.decode("gbk").encode("utf-8") print(gbk_to_utf8)
在python3 中 默認是unicode 的模式。所以只需要encode("gbk")
s="你好" s=s.encode("gbk") print(s)