>백엔드 개발 >파이썬 튜토리얼 >ASCII가 아닌 문자로 문자열을 디코딩하면 \'UnicodeDecodeError: 잘못된 연속 바이트\'가 발생하는 이유는 무엇입니까?

ASCII가 아닌 문자로 문자열을 디코딩하면 \'UnicodeDecodeError: 잘못된 연속 바이트\'가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-26 11:20:09139검색

Why Does Decoding a String with Non-ASCII Characters Result in a

디코딩 오류: "UnicodeDecodeError, 잘못된 연속 바이트"

UTF-8을 사용하여 ASCII가 아닌 문자가 포함된 문자열을 디코딩하려고 할 때 코덱을 사용하는 경우 "UnicodeDecodeError: 잘못된 연속 바이트" 오류가 발생할 수 있습니다. 이 오류는 문자열에 유효한 UTF-8 연속 바이트가 아닌 바이트 시퀀스가 ​​포함되어 있음을 나타냅니다.


제공된 특정 예에서:

o = "a test of \xe9 char"
v = o.decode("utf-8")

문자열 o에는 비ASCII 문자 xe9(é). UTF-8 코덱을 사용하여 디코딩하려고 하면 xe9가 잘못된 UTF-8 연속 바이트이기 때문에 앞서 언급한 오류와 함께 실패합니다.

해결책

해결책 문자열에서 ASCII가 아닌 문자를 처리할 수 있는 다른 코덱을 사용하는 것입니다. 이 경우 é:

v = o.decode("latin-1")

설명

과 같은 악센트 문자를 포함하여 서유럽 문자를 처리하도록 설계된 latin-1 코덱을 사용할 수 있습니다. latin-1 코덱은 영어 알파벳 문자, 악센트 문자 및 일부 구두점을 포함하여 256자를 포함하는 단일 바이트 문자 집합입니다. 일반적으로 서유럽 언어로 텍스트를 인코딩하는 데 사용됩니다.

latin-1 코덱을 사용하면 "UnicodeDecodeError" 예외가 발생하지 않고 문자열 o를 성공적으로 디코딩할 수 있습니다.

위 내용은 ASCII가 아닌 문자로 문자열을 디코딩하면 \'UnicodeDecodeError: 잘못된 연속 바이트\'가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.