如何解决python中编码错误的问题_【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法...
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
對于Python解析器
而Python解析器所干的事情,就是:
Python解析器,根據當前的所用的字符串編碼類型
此字符串編碼類型,是你自己所設置的
不論是在Python的IDLE中,還是Python文件中
都是你自己顯示指定對應的編碼類型的
當然你沒顯示的指定的話,那就用默認的配置
如果是Python的IDLE,如果你沒修改defaultencoding,那么就使用默認的字符編碼
可以通過sys.getdefaultencoding()而獲得,比如此處獲得是:ascii
idle sys.getdefaultencoding
如果是Python文件,如果你沒聲明文件編碼,則使用默認的編碼:UTF-8
常見的做法是指定為對應的UTF-8類型:# -*- coding: utf-8 -*-
相關內容,不了解的可參考:【整理】關于Python腳本開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件編碼類型
去執行你的Python代碼
其中,很常見的幾種動作是:
打印print對應的所獲得的字符
對于字符串打印,Python的邏輯:
如果是Unicode字符串,則可以,自動地,編碼為對應的終端所用編碼,然后正確的顯示出來
比如unicode的字符串,輸出到windows的默認編碼為GBK的cmd中,則Python可以自動將Unicode編碼為GBK,然后輸出到cmd中
個別特殊情況,也會出錯:
當此unicode字符串中包含某特殊字符,而目標終端的編碼**中,沒有此字符,則很明顯也是無法實現將Unicode編碼為對應的特定編碼的字符串,無法正確顯示的
如果是某種編碼類型的str,則需要該str的編碼類型,和目標終端編碼匹配
比如GBK的字符串,輸出到windows的默認編碼為GBK的cmd,則是可以正常輸出的
此處后來經過代碼測試,就發現一個有趣或者說詭異的問題,雖然我們python文件聲明的UTF-8編碼,但是實際上實際上是用GBK編碼,而此時,文件中的字符串,很明顯是用GBK存儲的,所以,將此GBK字符,輸出到GBK的cmd中,是可以正常輸出的。即,此處字符串的類型,很明顯只和文件所用的實際編碼有關,而和文件所聲明的代碼無關。
如果是UTF-8的字符串,輸出到windows的默認編碼為GBK的cmd,就會出錯
對相應的字符,進行編碼(為某種特定類型的字符str),或解碼(為對應的unicode類型的字符)
比如將當前的某種編碼的字符串,解碼為Unicode字符串
很明顯,也是要保證,你字符串本身的編碼和所指定的編碼,兩者之間要一致的
比如:decodedUnicode = someUtf8Str.decode("UTF-8")
而如果用這樣的:decodedUnicode = someGbkStr.decode("UTF-8"),那就會出現錯誤
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的如何解决python中编码错误的问题_【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原油期货影响油价吗?
- 下一篇: 如何制作网页(网页制作步骤)