Python讀取TXT格式文件遇到的文件編碼規則轉換問題UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 14: illegal multibyte sequence


在大多數人使用Windows中文版本的情況下,使用Python從TXT文件中讀取數據時,初學者經常會遇到由於文檔編碼規則差異導致文檔讀取報錯,例如,如下報錯:

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa7 in position 14: illegal multibyte sequence

從以上報錯可以看出,應該是萬國碼在轉換時出障礙,即GBK規則的文檔編碼無法正確解碼。那么這是為什么呢? 如何解決這個問題呢? 

對於文檔編碼,在Windows環境下,我們幾乎很少注意文檔的編碼方式。但是幾乎可以判定,對於中文操作環境,必定是默認為Unicode編碼規則,而不是ASCII或者UTF編碼規則,這應該是大多數PC廠家的預裝的默認設置。(雖然,我覺得默認UTF應該更合理!優化內存的消耗。)

我使用的Excel創建的文檔,然后選擇另存為,果然,我發現默認的是Unicode,應該說找到了問題點。

鑒於學習需要,我們Python IDE,編譯器等以及文檔的Encoding 編碼規則起初均設置為UTF-8,所以,我所要提取的文檔應該也需要是UTF-8的編碼規則。

這個只要另存為的時候選擇編碼:UTF-8選項就可以了。

運行代碼如下:

f=open(r"D:\unDownload\Python video\userinfo.txt",'r')
s=f.read()
print(s)

結果發現,讀取的結果有兩個亂碼。返回原始文檔查看未發現該亂碼。
"D:\4 Python Learning\oldboy1\venv\Scripts\python.exe" 
鍩縩ame Password EmployeeID Accountlooked
Jessica&&% love123 A000001
Richard ppl123 A000002
Jordan abc123 B000003
Jessica&&% love124 A000003
Richard hkp124 A000004

 修改代碼如下,在調用Open打開文檔時,即聲明Encoding的編碼方式為UTF-8

f=open(r"D:\unDownload\Python video\userinfo.txt",'r',encoding="UTF-8")
s=f.read()
print(s)

 運行結果如下:

name Password EmployeeID Accountlooked
Jessica&&% love123 A000001
Richard ppl123 A000002
Jordan abc123 B000003
Jessica&&% love124 A000003
Richard hkp124 A000004
Jordan abc124 B000004
Jessica&&% love125 A000005
Richard hhu125 A000006

發現,亂碼消失了。

通過以上可以確定,Open調用TXT文檔時,在Read()時,可能並不一開始就是用默認的編碼規則讀取,而是嘗試。這個要查看相關源碼才能確定。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM