這個問題曾在我初學Python的時候令我頭疼不已,尤爲是目前咱們由於各類包的緣由還只能使用2.x的版本。在3.x中字符編碼已經統一用Unicode了。html
Python 默認支持的是ASCII字符,包含了英文字母大小寫以及標點符號,用一枚字節表示。中文則使用兩枚字節表示。java
沒興趣的同窗能夠繞過這段…函數
有人可能要問了,我擦,爲神馬之前說一個漢字的精度越高字節越多麼?爲神馬是兩枚字節?字體
這是兩個不一樣的概念。存儲裏講的是一個漢字佔兩個字節。 而你說的點陣那個是打印碼。編碼
平時說1個漢字佔2個字節,是指漢字編碼,就象每一個字符都有一個ASCII碼同樣。1個ASCII碼佔1個字節,而1個漢字編碼佔2個字節。spa
簡單地解釋下,咱們屏幕上看到的漢字實際上是一個16*16的矩陣,它所須要的位數共是16*16=256個位,每一個字節爲8位,所以,每一個漢字都須要用256/8=32個字節來表示。命令行
即每兩個字節表明一行的16個點,共須要16行,顯示漢字時,只需一次性讀取32個字節,並將每兩個字節爲一行打印出來,便可造成一個漢字。code
這也就是傳說中的點陣字體。htm
---我是正文的分割線---blog
So當中文編碼和ASCII混用的話,就會出現錯誤咯。
目前中文編碼有GB2312,BIG5,GBK。
建議使用統一字符集Unicode,能夠處理全部的語言文字。
若是在.py文件中使用中文,請使用:
#-*- coding:utf-8 –*-
請注意在使用IDE的時候,project的編碼格式必定要設置爲utf-8,不然輸出的還是亂碼,由於你寫的腳本沒用UTF-8保存。
先別急着去練習,我們來看看下面這個腳本:
#-*- coding:utf-8 –*-
# chinese.py
chinese='''
在Python中使用中文,必定要
注意字符編碼問題
'''
print chinese
在命令行運行的結果:
這是咋回事呢?不是寫了編碼了麼?還亂碼啊,有木有?有木有?有木有?
這是由於win的,命令行用的是cp936編碼,而上面腳本用的是utf-8編碼,所以致使亂碼。
解決方法是,使用decode和encode函數對字符從新解碼和編碼。
print chinese.decode('utf-8').encode('cp936')
OK,熟悉的文字出來了。
2011/8/8更新,如下內容轉載自:
http://ppjava.iteye.com/blog/210143
常見的編碼轉換分爲如下幾種狀況:
另一篇有價值的文章可查看這一篇:傳送門