本文目錄一覽:
- 1、python gb2312編碼問題
- 2、遇到python編碼錯誤要怎麼解決
- 3、網頁編碼和Python編碼不匹配怎麼辦
- 4、linux python運行報編碼錯誤
- 5、python3讀文件編碼錯誤怎麼辦
- 6、python在print的時候出現編碼錯誤?
python gb2312編碼問題
使用python進行gb2312編碼,遇到如下問題
其中編碼錯誤的漢字是: 別克
經過閱讀這篇文章 GBK與GB2312的些許不同 使用gbk進行編碼,問題就解決。
再次遇到問題:
這次編碼錯誤的字是:g l 8
遇到python編碼錯誤要怎麼解決
在將字符串寫入文件時,執行f.write(str),後台總是報錯:UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\u6211′ in position 0: ordinal not in range(128),即ascii碼無法被轉換成unicode碼。
剛開始我以為Python默認的編碼是utf-8,所以使用decode方法和encode方法來進行編碼轉換,後來怎麼也不成功,於是懷疑是否默認編碼不是utf-8。
使用下面語句獲取python當前的默認編碼:
[python] view plain copy
import sys
print sys.getdefaultencoding()
網頁編碼和Python編碼不匹配怎麼辦
網頁編碼格式有很多,比如UTF-8,GBK2312等,在網址頁面F12鍵,ctrl+f搜索charset可看到該網頁使用的編碼格式,如CSDN為charset=”utf-8”。我們使用python獲取網頁內容時,經常會由於網頁編碼問題導致程序崩潰報錯或獲取到一堆二進制內容,軟件的兼容性很差。有一個辦法,可以通過第三方庫chardet獲取編碼格式,再使用該編碼格式解碼數據可實現兼容。
1、安裝chardet庫
chardet是第三方庫,需要先安裝再使用。簡單的辦法是啟動DOS界面,進入python安裝路徑下Scripts路徑中(其中有pip腳本),運行”pip install chardet”,即可完成安裝(可能需要先更新pip,根據提示運行命令即可);
2、導入charset、建立函數
python工程中導入charset庫(”import chardet”);建立函數如下:
def get_url_context(url):
content = urllib.request.urlopen(url) #獲取網頁內容
encode = chardet.detect(content) #獲取網頁編碼格式字典信息,字典encode中鍵encoding的值為編碼格式
return content.decode(encode[‘encoding’], ‘ignore’) #根據獲取到的編碼格式進行解碼,並忽略不能識別的編碼信息
以上函數的返回值即為網頁解碼後的內容,無論網頁是哪種格式編碼,都能輕鬆識別轉換;需要注意的是解碼時要加參數’ignore’,否則網頁中可能會有混合編碼導致程序出錯。
linux python運行報編碼錯誤
一次重啟服務器後,supervisor接管的python腳本中的函數 open() 和 print() 都會報下面的編碼錯誤:
UnicodeEncodeError: ‘ascii’ codec can’t encode
使用的是python3,按理說編碼都會默認utf-8,而且本地運行的python腳本並沒有這個問題。
經大佬指點,增加環境變量 export LC_ALL=”en_US.UTF-8″ 後,再重啟supervisor,問題解決
下面是複製的:
Locale是一個軟件在運行時的語言環境,。是根據計算機用戶所使用的語言,所在國家或者地區,以及當地的文化傳統所定義的。它包括語言(Language), 地域 (Territory) 和字符集(Codeset)。
一個locale的書寫格式為: 語言[ 地域[.字符集]]。完全的locale表達方式是 [語言[ 地域][.字符集] [@修正值]。例如:
zh_CN.GB2312 = 中文_中華人民共和國+國標2312字符集。
(1)locale把按照所涉及到的文化傳統的各個方面分成12個大類
(2)查看標準字符集列表
常用字符集:en_US.utf8、zh_CN.gb2312、zh_CN.gbk、zh_CN.utf8等
3.Locale的設定
LC_ALL和LANG優先級的關係:LC_ALL LC_* LANG
(1)如果需要一個純中文的系統的話,設定LC_ALL= zh_CN.XXXX即可。或者設定LANG=zh_CN.XXXX也可以,但是LC_ 不要有任何特殊設定才可以(因為LC_ 優先級高)。
(2)如果需要個性化的環境,例如只想要一個可以輸入中文的環境,而保持菜單、標題,系統信息等等為英文界面,那麼只需要設定LANG=en_US.XXXX,然後 LC_CTYPE=zh_CN.XXXX就可以了。
(3)假如什麼也不做的話,也就是LC_ALL,LANG和LC_*均不指定特定值的話,系統將採用POSIX作為lcoale,也就是C locale。
4.查看與設定字符集實踐
(1)查看當前系統字符集三種方式(LC_ALL、LC_CTYPE和LANG),以查看LANG為例:
(2)更改系統字符集
備註:直接執行上述命令,可以臨時修改系統字符集。如果寫入環境變量可以永久改變字符集。
(3)取消當前系統字符集(設定為空)
備註:直接執行上述命令,可以臨時修改系統字符集。如果寫入環境變量可以永久改變字符集。
python3讀文件編碼錯誤怎麼辦
在python3中系統默認編碼是unicode,讀取文件經常會編碼錯誤導致報錯。
首先先確認要讀取文件的編碼,可這樣操作:
記事本打開文本文件,點擊“文件”-“另存為”查看編碼:
如圖顯示編碼就是當前的文件編碼,這裡是“utf-8”。
2. 要想用指定編碼打開,使用codecs模塊
安裝模塊pip命令:
pip install codecs
3. 使用codecs模塊,例如讀取test文件內容並打印:
import codecs
f=codecs.open(r”test.txt”,”r”,”gbk”)
print(f.read())
f.close()
(示例的文件是ANSI所以使用GBK讀取)
以上就可以正確讀取想要的文件了
python在print的時候出現編碼錯誤?
這個是由於ide(你的是pycharm?)的默認編碼沒對,修改為utf-8就可以了(自己找在哪改,不是代碼里改)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/248140.html