1. 程式人生 > >[python 學習] 編碼

[python 學習] 編碼

utf 技術分享 www .html 一個 encoding ges 轉碼 dos

一、源文件編碼(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 學習] 編碼