[python 學習] 編碼
一、源文件編碼(encoding: utf-8)
1、
python 2.x 默認按ascii編碼讀取源文件,源碼中出現了ascii不能表示的字符 "的",所以報錯(3.x版本不報錯)。
2、
源碼中加上 encoding: utf-8,此時允許源文件中出現非ascii字符,但是在windows的DOS中輸出時還會再轉碼(此處轉為GBK)。
3、
源文件的編碼和dos的輸出編碼都是GBK,這時內容一致。
同上。
二、字符串編碼
1、字符串存儲的默認編碼:
python 2.7
python 3.3.3
2、unicode對象和普通字符串str
對 s 按 utf-8 解碼到unicode對象,再對unicode對象按gbk編碼。
直接對str字符串按gbk編碼出錯,是因為字符串的默認編碼(python 2.7)是ascii,默認執行 s.decode(‘ascii‘).encode(‘gbk‘),所以出錯。
設置了字符串默認編碼為utf-8,不會再報錯。
python中我們使用decode()和encode()來進行解碼和編碼
在python中,使用unicode類型作為編碼的基礎類型。即:
decode encode
str--------->unicode--------->str
適用 python 2.x , python 3.x 又變了,一個版本一個語言。
三、basestring、str、unicode
3.1 str 和 unicode 都是 basestring 的子類:
3.2 使用 str 創建 unicode 對象:
參見:http://www.cnblogs.com/evening/archive/2012/04/19/2457440.html
[python 學習] 編碼