標籤:

python 解碼錯誤提示的位置?

一篇長文檔,是用ANSI編碼的,python解碼讀取時發生錯誤,

顯示

UnicodeDecodeError: gbk codec cant decode byte 0xad in position 840: illegal multibyte sequence

請問它所說的position 840是什麼位置?為何會出錯,怎樣修正以便解碼?


我剛解決

UnicodeDecodeError: gbk codec cant decode byte 0xad in position 23: illegal multibyte sequence

的問題,希望能幫到你:

#!/usr/bin/python3
# -*- coding:utf8 -*-
import codecs

然後指定解碼方式:

open("filename",w,encoding="utf8")

解碼類型根據你的需要修改。對於你的情況,大概需要將「utf8」改為「acsi」。

IDLE
中執行help(open)可以看到這樣一段:

encoding is the name of the encoding used to decode or encode the

file. This should only be used in text mode. The default encoding is

platform dependent, but any encoding supported by Python can be

passed. See the codecs module for the list of supported encodings.

個人感覺是對本問題的最好解答。


use below: encoding=utf-8

example:

with open(fname, encoding=utf-8) as data_file:


@陳霄 的回答是一種方式,另外一種方式是先以二進位方式讀取文件,然後再以 UTF-8 方式解碼,譬如你要對一個 test.txt 文件讀取,然後分別處理每一行,可以這麼來寫:

with open("test.txt", "rb") as f:
for line in f:
line = line.decode("utf-8")
some_code_to_process_line()


with open(fname, encoding=utf-8) as data_file:


文檔能夠打開嗎?如果可以的話換種編碼再保存


推薦閱讀:

python內建函數的概略學習?
python初學者,如果你連這樣的習題寫不出代碼,該怎麼辦?
Python 中列表和元組有哪些區別?
用半年的時間來開發一個新網站,應該選 PHP 還是 Python?

TAG:Python |