UnicodeDecodeError: 'ascii' 코덱이 Python 2.x에서 바이트를 디코딩할 수 없음이 표시됩니다 ASCII가 아닌 문자가 포함된 Python 2.x 문자열을 원본 인코딩을 지정하지 않고 유니코드 문자열로 변환하려면 string.
문자열과 구별되는 유니코드 문자열은 유니코드 포인트 코드를 보유하며 스펙트럼 전체의 모든 유니코드 포인트를 나타낼 수 있습니다. 반면에 문자열에는 UTF-8, UTF-16 또는 ISO-8895-1과 같은 인코딩된 텍스트가 포함됩니다. 문자열은 유니코드로 디코딩되고 그 반대의 경우도 마찬가지입니다. 파일과 텍스트 데이터는 항상 인코딩된 문자열로 전송됩니다.
Markdown 모듈은 unicode()를 사용하여 수신 문자열을 검증하여 해당 문자열이 ASCII인지 또는 다시 래핑된 유니코드 문자열인지 확인합니다. Markdown 작성자는 수신 문자열의 인코딩을 결정할 수 없기 때문에 문자열을 전달하기 전에 사용자가 문자열을 유니코드로 디코딩해야 합니다.
유니코드 문자열은 코드 앞에 'u' 접두사를 사용하여 코드에서 선언할 수 있습니다. 끈. 예를 들면 다음과 같습니다.
my_u = u'my ünicôdé strįng'
명시적인 unicode() 호출이 없어도 str에서 Unicode로의 변환이 발생할 수 있습니다. 다음 상황에서는 UnicodeDecodeError 예외가 발생할 수 있습니다.
소스 코드: 'u' 접두사가 붙은 유니코드 문자열을 사용하여 ASCII가 아닌 문자를 소스 코드에 포함할 수 있습니다. Python이 소스 코드를 올바르게 디코딩할 수 있도록 하려면 올바른 인코딩 헤더가 포함되어야 합니다. UTF-8 파일의 경우 다음을 사용하세요.
# encoding: utf-8
파일: 파일을 즉시 디코딩하려면 올바른 인코딩과 함께 io.open을 사용하세요. 예를 들어, UTF-8 파일의 경우:
import io with io.open("my_utf8_file.txt", "r", encoding="utf-8") as my_file: my_unicode_string = my_file.read()
데이터베이스: 유니코드 문자열을 반환하고 SQL 쿼리에 유니코드 문자열을 사용하도록 데이터베이스를 구성합니다.
HTTP: 웹페이지는 다양한 인코딩을 가질 수 있습니다. Python-Requests는 response.text에 유니코드를 반환합니다.
수동: my_string.decode(encoding)를 사용하여 문자열을 수동으로 디코딩합니다. 여기서 인코딩은 적절한 인코딩입니다.
Python 3은 Python 2.x와 약간 다르게 유니코드를 처리합니다. 일반 str은 이제 유니코드 문자열이고 이전 str은 이제 바이트입니다.
Python 3에서 기본 인코딩은 UTF-8이므로 인코딩을 지정하지 않고 바이트 문자열을 디코딩하면 UTF-8이 사용됩니다. 또한 open()은 기본적으로 텍스트 모드에서 작동하여 디코딩된 str(유니코드 문자열)을 반환합니다.
위 내용은 UnicodeDecodeError: 'ascii' 코덱이 Python 2.x에서 바이트를 디코딩할 수 없는 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!