关于python编码的问题
首先要說明的是在python內部的編碼為Unicode,在使用encode()與decode()兩個方法時,都是將Unicode作為中間橋梁的。eg:
string.decode('utf-8') 表示將編碼為‘utf-8’的字符串編碼為Unicode。
string.encode('gb2312') 表示將Unicode編碼為gb2312。
另外,常見的字符編碼有ascii、Unicode、utf-8以及針對中文編碼的gb2312。
1、ascii是一種針對英文、數字字符編碼的方式,一共有127字符,采用一個字節來編碼,比如:A采用ascii編碼為十進制65。
2、Unicode是一種將中文以及所有語言編碼進去的格式,Unicode一般采用兩個字節來編碼(有些生僻字符需要4個字節)。
3、utf-8是本著節約的精神出現的一種編碼方式,因為如果采用Unicode進行編碼,對于像英文字母的這種字符只需要一個字節就夠了,那么用Unicode編碼顯然是有一些浪費的,由此utf-8出現了。它將Unicode編碼轉化為“可變長編碼”,可以將一個Unicode字符編碼為1-6個字節,英文1個字節,漢字通常3個字節,一些生僻的字符4-6個字節。
4、gb2312編碼采用兩個字節來編碼一個漢字。
(補充一些基本知識:因為計算機只認識01數字,而計算機被設計為1個字節(byte)有8個比特(bit),因此,如果用一個字節來表示字符的話,最大只能表示到255,對于我們博大精深的漢字來說是遠遠不夠的。因此在gb2312編碼中采用兩個字節來編碼一個漢字。其中兩個字節可以表示到65535)
接下來是一些在調試python程序時遇到的一些編碼問題:
eg:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 遇到這個問題時,是在將網絡數據流寫進本地文件時出現的。
因為在windows下,新文件的默認編碼為gbk,這樣的話,python解釋器或用gbk編碼去解析我們的網絡數據流,而我們的網絡數據流并不一定是gbk編碼的,所以解決辦法是,改變目標文件的編碼:
fp=open('xxxx.html','w', encoding='utf-8')
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的关于python编码的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SOFAMosn 无损重启/升级
- 下一篇: day22 Pythonpython 本