Programing

UnicodeDecodeError : 'utf-8'코덱이 바이트를 디코딩 할 수 없습니다

lottogame 2020. 5. 25. 08:04
반응형

UnicodeDecodeError : 'utf-8'코덱이 바이트를 디코딩 할 수 없습니다


여기 내 코드가 있습니다.

for line in open('u.item'):
#read each line

이 코드를 실행할 때마다 다음 오류가 발생합니다.

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte

이 문제를 해결하고 open ()에 추가 매개 변수를 추가하려고했습니다. 코드는 다음과 같습니다.

for line in open('u.item', encoding='utf-8'):
#read each line

그러나 다시 같은 오류가 발생합니다. 그럼 어떻게해야합니까! 도와주세요.


Mark Ransom이 제안한 것처럼 해당 문제에 적합한 인코딩을 찾았습니다. 인코딩 정도로 교체 "ISO-8859"을 open("u.item", encoding="utf-8")가진 open('u.item', encoding = "ISO-8859-1")문제점을 해결하는 것이다.


ISO 8859-1은 주로 Speech Recognition API를 사용하는 경우 많은 것을 절약 할 것입니다.

예:

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");

파일에 실제로 utf-8로 인코딩 된 데이터가없고 다른 인코딩이 포함되어 있습니다. 해당 인코딩이 무엇인지 파악하고 open통화에 사용하십시오 .

예를 들어 Windows-1252 인코딩 0xe9에서는 문자가 é됩니다.


팬더를 사용하여 읽으십시오.

pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')

Python 2다음을 사용 하는 경우 해결책이 있습니다.

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # do something

encoding매개 변수가에서 작동하지 않기 때문에 open()다음 오류가 발생합니다.

TypeError : 'encoding'은이 함수에 유효하지 않은 키워드 인수입니다.

다음과 같은 문제를 해결할 수 있습니다.

for line in open(your_file_path, 'rb'):

'rb'는 이진 모드에서 파일을 읽고 있습니다. 자세한 내용은 여기를 참조 하십시오 . 이것이 도움이되기를 바랍니다!


누군가 이것을 찾고 있다면, 이것은 Python 3에서 CSV 파일을 변환하는 예제입니다.

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass

때때로open(filepath)하는 filepath사실이 아닌 파일은 존재 열려고하고 있는지 파일을 그래서 첫째로, 같은 오류를 얻을 것이다 :

import os
assert os.path.isfile(filepath)

이것이 도움이되기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/19699367/unicodedecodeerror-utf-8-codec-cant-decode-byte

반응형