在python2.7下字符編碼的問題
#--*-- coding:utf-8 --*--
s="你好" ##2.7就看第一行寫啥
s_to_unicode=s.decode("gbk")
print s_to_unicode
結果為:浣犲ソ 其實這句話s_to_unicode=s.decode("gbk"),就相當于你非要用記事本打開word一樣擂涛,沒什么意義
s還是utf-8的編碼格式读串,但你非要使用gbk的轉碼包,gbk的字節(jié)范圍時包含utf-8的撒妈,但打開的是亂碼而已恢暖,畢竟對應關系不一樣
1 s="你好"
2 s_to_unicode=s.decode("gbk")
3 print s_to_unicode
如果沒有第一行就會報錯了,此時s將使用默認的ascii來存儲狰右,但ascii的字節(jié)范圍是1個字節(jié)胀茵,無法保存的,就會報錯了
http://www.cnblogs.com/work115/p/5924446.html
在python2中進行編碼和解碼的時候挟阻,不指定編碼方式,那么python就會使用defaultencoding
1 #--*--coding:utf-8--
2 s="你好"
3 #: s是一個utf-8格式的字符串
4 u=s.decode("utf-8")
5 #: s被解碼為unicode對象峭弟,賦給u
6 sg=u.encode("gbk")
7 #: u被編碼為gbk格式的字符串,賦給sg
8 print sg
1 #--*--coding:utf-8--*--
2 s="你好"
3 ss=s.encode("gbk")
4 print ss
上面的代碼會報錯附鸽,報錯信息:'ascii' codec can't decode byte......
因為沒有指定defaultencoding,所以其實在做這樣的事情:s.decode('ascii').encode('gbk')
(ascii解碼包是無法解碼utf-8的)
設置defaultencoding代碼如下:
1 reload(sys)
2 sys.setdefaultencoding('utf-8')
當然這些主要是在python2.x下的問題,沒有特殊需求就用python3吧
python3默認的字符編碼為unicode