python3utf8gbk
⑴ 新手,求教關於python3編碼的問題
你需要明白兩個概念:
什麼叫字元串、位元組串
在Python中字元串是指一串可以展示在終端里、供人閱讀的字元,至於字元採用什麼編碼並不重要,同樣的文字,可能是用Unicode、UTF-8或GBK編碼,但列印在終端中的內容相同,那麼就認為是同一串字元串。而位元組串是指將字元串通過某種編碼轉換得到的一串位元組,同樣一個字元串,使用不同的編碼轉換後得到的位元組串可能完全不同。
什麼叫encode、decode
encode中文為編碼,顧名思義,是將字元串以某種編碼形式編碼得到位元組串的過程;相反,decode中文為解碼,是將位元組串以某種編碼形式翻譯得到字元串的過程。
a是一個字元串,它的內容是「周傑倫」這三個字,類型是str;b = a.encode('utf-8')是將a以utf-8形式編碼得到的位元組串,它的內容是「周傑倫」這三個字的utf-8編碼,類型是bytes。
⑵ Python3 如何對url解碼
url編碼:
import urllib
url = 'http://test.com/s?wd=哈哈' #如果塵鉛早此網站編碼是激蠢gbk的話派雀,需要進行解碼,從gbk解碼成unicode,再從Unicode編碼編碼為utf-8格式。
url = url.decode('gbk', 'replace')
print urllib.quote(url.encode('utf-8', 'replace'))
⑶ python3 中文編碼問題,Non-UTF-8 code starting with 'xb5'
遇到中文編碼問題時,使用Python3編寫程序並列印中文,但在Geany編輯器中直接報錯,提示「第三行中是非utf-8代碼,但未聲明編碼方式。」
為解決此問題,需按照官方指南指定編碼方式。具體步驟如下:
1. 在程序第一行或第二行加入如下形式的代碼,指定編碼方式。例如:# -*- coding: utf-8 -*-
2. 修改源代碼,加入指定編碼方式的注釋。
3. 運行程序,發現結果被解釋為拉丁文,而非預期的中文。
4. 考慮到中文顯示異常,嘗試將編碼方式修改為UTF-8,但報錯提示字元集錯誤,無法解碼。繼續排查原因。
5. 發現編輯器的編碼格式並非UTF-8,這可能是導致問題的原因。
修改源代碼編碼方式為與編輯器一致的GBK格式,重新運行程序,問題解決。
同樣,修改編輯器編碼方式、源代碼編碼方式都為UTF-8,也可解決此問題。
總結,關鍵在於確保文件保存的編碼方式與源代碼指定的編碼兼容,這樣才能實現正常執行。通過上述步驟,最終解決了中文編碼問題,確保了程序正確顯示中文內容。
⑷ python命令行輸入中文亂碼怎麼辦
python2.X,代碼中指定了UTF-8,但是在cmd命令行窗口時,列印的中文仍然會亂碼。
在python3不存在該問題
運行結果:
原因
中文windows默認的輸出編碼為gbk ,與腳本中定義的UTF-8不一樣,所以出現了解碼失敗的情況。
相關推薦:《Python基礎教程》
解決方法
有如下兩種方法可以解決這個問題
方法一
我們可以通過先把中文解碼為unicode,然後再轉化為gbk來解決這個問題:
修改後運行結果:
方法二
當然,我們也可以通過改變cmd命令行窗口的輸出格式來解決這個問題:
·chcp 65001 就是換成UTF-8代碼頁
·chcp 936 可以換回默認的GBK
但是這樣就降低了腳本的兼容性,在其他環境運行的時候可能還會出現這樣的錯誤,而且可能會影響其他腳本運行,所以推薦使用第一種方法。