1. 程式人生 > >python---字符編碼

python---字符編碼

type 分享 utf-8 sci string span py3 unicode轉換 png

1. 無論py2還是py3,字符編碼之間相互轉換,如gbk轉換成utf-8,都需要通過unicode中轉

技術分享,

2. 將非unicode轉換成unicode的時候,是需要告知原本是什麽類型,如原本是utf-8的,轉換成unicode應如下:

string1 = "你好"

假設string1原本是utf-8,需要轉換成unicode,

則轉換過程為:string1.decode("utf-8")

3. 如果需要將原本為utf-8的轉換為gbk,則流程應為先將string1轉換成unicode,再轉換成gbk

string1.decode("utf-8")

string1.encode("gbk")指定為轉換後的字符編碼

python3中,在encode的時候,不僅將字符串改變的字符編碼,並且改變成二進制格式

python2中解釋器的默認以ASCII碼去解釋文件,python3中通過utf-8去解釋文件,但可以通過在文件開頭以 # -*- coding:utf-8 -*- 的方式告知解釋器以utf-8來解碼

python3中,文件內的數據類型是用unicode編碼的,如字符串的字符類型是unicode

 1 import sys
 2 print(sys.getdefaultencoding())    #打印系統默認編碼
 3 
 4 s = "杭州"                    #python 3中文件內的字符串類型默認是unicode
5 print(s,type(s)) 6 print(s) 7 s = s.encode("gbk") #將unicode編碼成gbk 8 print(s,"=========") 9 s_to_unicode = s.decode("gbk") #將編碼由gbk轉換成unicode,這個意識是告知s原本是gbk的編碼需要轉換成unicode 10 print(s_to_unicode) 11 12 unicode_to_utf8 = s_to_unicode.encode("utf-8") #將原本是unicode的轉換成utf-8 13 print(unicode_to_utf8)
14 utf8_to_gb2312 = unicode_to_utf8.decode("utf-8").encode("gb2312") #將原本是utf-8的轉換成gb2312,中間需要通過先decode轉換成unicode,再將unicode通過encode轉換成gb2312 15 print(utf8_to_gb2312)

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

4. ASCII占用一個字節,GBK,GB2312占用兩個字節,UTF-8編碼是變長編碼,通常漢字占三個字節,擴展B區以後的漢字占四個字節。

參考鏈接:http://www.cnblogs.com/yuanchenqi/articles/5956943.html

python---字符編碼