development

UnicodeDecodeError : 'charmap'코덱은 Y 위치에서 바이트 X를 디코딩 할 수 없습니다.

big-blog 2020. 2. 18. 22:46
반응형

UnicodeDecodeError : 'charmap'코덱은 Y 위치에서 바이트 X를 디코딩 할 수 없습니다.


정보로 채워진 텍스트 파일로 일부 조작을 수행하는 Python 3 프로그램을 얻으려고합니다. 그러나 파일을 읽으려고 할 때 다음 오류가 발생합니다.

역 추적 (최근의 마지막 호출) : UnicodeDecodeError의 'C : \ Python31 \ lib \ encodings \ cp1252.py'파일 23
행의 파일 "SCRIPT LOCATION", NUMBER
text = file.read()
행,
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
'charmap'코덱에서 바이트를 디코딩 할 수 없음 위치 2907500의 0x90 : 문자가<undefined>


문제의 파일이 CP1252인코딩을 사용하지 않습니다 . 다른 인코딩을 사용하고 있습니다. 어느 것을 스스로 알아 내야합니까? 일반적인 것은 Latin-1UTF-8입니다. 이후 0x90가 실제로에서 평균 아무것도하지 않는 Latin-1, UTF-8( 0x90이 연속 바이트)를 가능성이 높습니다.

파일을 열 때 인코딩을 지정합니다.

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

@LennartRegebro의 답변에 대한 확장으로 :

파일에서 어떤 인코딩을 사용하는지 알 수없고 위의 솔루션이 작동하지 않고 (그렇지 않은 경우 utf8) 추측 만하 는 경우, 어떤 인코딩인지 식별하는 데 사용할 수 있는 온라인 도구 가 있습니다. 그들은 완벽하지는 않지만 일반적으로 잘 작동합니다. 인코딩을 알아 낸 후에는 위의 솔루션을 사용할 수 있어야합니다.

편집 : (의견에서 복사)

인기있는 텍스트 편집기 Sublime Text에는 인코딩이 설정된 경우 표시하는 명령이 있습니다 ...

  1. 이동 View-> Show Console(또는 Ctrl+ `)

여기에 이미지 설명을 입력하십시오

  1. 맨 아래에 필드에 입력 view.encoding()하고 최고를 바라고 (나는 아무것도 얻을 수 없지만 Undefined운이 좋을 것입니다 ...)

여기에 이미지 설명을 입력하십시오


file = open(filename, encoding="utf8")시도하지 않는 경우에 추가하기 만하면됩니다.file = open(filename, errors='ignore')


또는 파일을 웹 사이트에 업로드하는 등 파일을 디코딩 할 필요가없는 경우 open(filename, 'rb'). r = 판독 값, b = 이진


Windows의 Anaconda에서 일하는 사람들에게는 동일한 문제가 있습니다. 메모장 ++로 해결할 수 있습니다.

메모장 ++에서 파일을 엽니 다. 오른쪽 하단에 현재 파일 인코딩이 표시됩니다. 최상위 메뉴에서 "보기"옆의 "인코딩"을 찾으십시오. "인코딩"에서 "문자 세트"로 가서 환자가 필요한 enconding을 찾으십시오. 제 경우에는 "Windows-1252"인코딩이 "서유럽 어"아래에 있습니다.

참고 URL : https://stackoverflow.com/questions/9233027/unicodedecodeerror-charmap-codec-cant-decode-byte-x-in-position-y-character



도와주세요.
반응형