我們在用python處理中文的時候,或多或少會遇到這樣一些錯誤
常見錯誤1:
syntaxerror: non-ascii character '常見錯誤2:\xe4
'in file c
unicodeencodeerror: '毫無疑問,我們在用python2.7.x的時候都會遇到這種問題,我們常規的解法又是怎麼樣的呢ascii
' codec can'
t encode characters in position 0-1: ordinal not in range(128)
#說起字元的編碼與解碼,那就不得不提字符集了coding:utf-8
import
requests
defprint_text():
url = '
'print requests.get(url).text.encode('
utf-8')
print_text()
如圖所示,我們所知的英文編碼都是採用ansi編碼,隨著中國的崛起,國家也開始資訊化,但是計算機不認識中國漢字,怎麼辦呢,我們制定自己統一的字符集,這就是gb2312,
後來更新的字符集,gbk,gb18030,big5 ,都是在原來的基礎之上增加一些新的元素的識別,比如一些生僻字,繁體字認識。
這樣一來不是中文一套,英文一套,那後來的一些其它的國家文字不就都不能互相通用了,那乾脆一鍋端,將這些英文,中文,各國的語言文字大一統,unicode就出現了,不僅相容了這些文字,與方便了各國的資訊交流.
在unicode編碼方式下,又存在 utf-8,utf-16,utf-32的編碼方式
通過上面的一些例子,我們可以大致對於編碼和解碼有乙個大概的印象,那接下來我們看看python2.7.x對於編碼是怎麼處理的,還是先上乙個圖
basestring下面有兩個物件,unicode,str 那這兩者的關係是怎麼樣的?
unicode ==encode==> str
str ==decode==> unicode
我們先看python的輸出
#輸出:coding:utf-8
s = '中文'
print type(s)
'在看看decode之後的處理方式str'>
#輸出:coding:utf-8
s = '
中文'.decode('
utf-8')
print type(s)
'這樣實驗我們可以很直觀的感受到,當我們要輸出乙個中文的時候:我們輸出的是乙個經過unicode原始物件encode後的str,那當我們拿到乙個返回物件,最常見的在爬蟲裡面得到返回字串的時候我們怎麼處理呢?unicode
'>
首先我們要在py檔案頭部宣告處理編碼,因為我們的py檔案預設採用的是ascii編碼,當返回的字串寫回到文件時就與文件編碼相衝突,這裡就會報銷:
#coding:utf-8
一般我們加上coding:utf-8就夠了,或者coding:gbk也可以
然後對於返回物件我們可以檢視一下型別type(response.text)
如果是unicode ,那這response.text.encode('utf-8')就可以得到我們要的str物件,如果是str,我們可以直接print出來,或者先解碼,在按你需要的方式編碼.
python基礎 中文編碼
python 檔案中如果未指定編碼,在執行過程會出現報錯 python中預設的編碼格式是 ascii 格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。解決方法為只要在檔案開頭加入 coding utf 8 或者 coding utf 8 就行了 pycharm 設定步驟 進入 fi...
Python 中文編碼
python 檔案中如果未指定編碼,在執行過程會出現報錯 usr bin python print 你好,世界 以上程式執行輸出結果為 file test.py line 2 syntaxerror non ascii character xe4 in file test.py on line 2,...
Python 中文編碼
在python中如果輸出中文字元 你好,世界 就有可能會碰到中文編碼問題。python 檔案中如果未指定編碼,在執行過程會出現報錯 usr bin python print 你好,世界 以上程式執行輸出結果為 file test.py line 2syntaxerror non ascii char...