2010-07-06 5 views
0

왜이 문제가 발생합니까? 어떻게 해결할 수 있습니까? 파이썬 인코딩 문제

UnicodeDecodeError: 'utf8' codec can't decode byte 0x92 in position 24: unexpected code byte 

당신은 문자의 "문자열"로 바이트 스트림을 설정하는 파이썬을 요구하고, 아마도 약간은 갑자기 당신에게

+1

당신이 뭘 하려는지 설명 할 수 : 조 Koberg의 대답

어떤 사람들은 도움이 발견 내 이전 대답을 생각 나게? – supersighs

+2

자세한 정보를 제공하고 코드를 게시하십시오. – Philipp

+2

참조 : http://groups.google.com/group/pylons-discuss/browse_thread/thread/ec18b194bd260244?pli=1 – Jon

답변

1

어딘가에 감사드립니다.

문자열을 "바이트"로 생각하지 마십시오. 문자열은 숫자 목록으로, 각 번호는 유니 코드에서 의미가 일치합니다. (# 65 = 라틴어 캐슬 A. # 19968 = 중국어 문자 "1"/ "처음").

유니 코드 엔터티 목록을 바이트 스트림으로 인코딩하는 데는 여러 가지 방법이 있습니다. 파이썬은 여러분의 바이트 스트림이 "UTF-8"이라는 특별한 메소드의 결과라고 가정합니다.

그러나 바이트 스트림에는 해당 방법과 일치하지 않는 데이터가 있습니다. 따라서 오류가 발생합니다.

바이트 스트림의 인코딩을 알아 내고 파이썬에 인코딩을 알려줘야합니다.

파이썬 2 또는 3을 사용하고 있고이 예외를 일으키는 코드가 바이트의 출처와이를 처리하는 적절한 방법을 파악하는 것이 중요합니다.

파일을 읽는 중일 경우, 읽은 바이트를 명시 적으로 처리 할 수 ​​있습니다. 그러나 파일 인코딩을 확실히해야합니다.

소스 코드의 일부인 문자열의 경우 파이썬은 소스 파일에 대해 "잘못된 것"이라고 가정합니다. 아마도 $LC_ALL 또는 $LANG을 설정해야합니다. 이것은 인코딩의 개념과 텍스트 편집기가 작성하는 인코딩을 선택하는 방법, 그리고 언어와 운영 체제의 표준이 무엇인지 확고하게 이해할 수있는 좋은 기회입니다.

0

Joe가 말했던 것 외에도 chardet은 원본 데이터의 인코딩을 감지하는 유용한 도구입니다.

0

대체로 "APOSTROPHE (') 대신"RIGHT SINGLE QUOTATION MARK "(')가 포함 된 일반 문자열이"Windows-1252 "(또는"cp1252 ")로 인코딩되어 있습니다. 이것은 읽은 파일 또는 심지어 파이썬 소스 파일에서 올 수 있습니다. 당신은 파이썬 2.x를 돌릴 수 있고, 스크립트의 시작 부분 어딘가에 # -*- coding: utf8 -*- 라인이 있거나 파이썬 3.x를 돌릴 수 있습니다.

데이터가 충분하지 않습니다. 그러나 어딘가에 cp1252로 인코딩 된 문자열이 있는데, 이는 명시 적으로 또는 암시 적으로 utf-8로 유니 코드로 디코딩하려고 시도합니다. 이것은 작동하지 않습니다.

자세한 정보를 입력하면 다시 시도해 드리겠습니다. Python UnicodeDecodeError - Am I misunderstanding encode?