> 백엔드 개발 > 파이썬 튜토리얼 > UnicodeDecodeError: 'ascii' 코덱이 Python 2.x에서 바이트를 디코딩할 수 없는 문제를 해결하는 방법은 무엇입니까?

UnicodeDecodeError: 'ascii' 코덱이 Python 2.x에서 바이트를 디코딩할 수 없는 문제를 해결하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-21 03:01:09
원래의
1015명이 탐색했습니다.

How to Solve the UnicodeDecodeError: 'ascii' codec can't decode byte in Python 2.x?

UnicodeDecodeError: 'ascii' 코덱이 바이트를 디코딩할 수 없음

UnicodeDecodeError: 'ascii' 코덱이 Python 2.x에서 바이트를 디코딩할 수 없음이 표시됩니다 ASCII가 아닌 문자가 포함된 Python 2.x 문자열을 원본 인코딩을 지정하지 않고 유니코드 문자열로 변환하려면 string.

Python 2.x의 유니코드 Zen

문자열과 구별되는 유니코드 문자열은 유니코드 포인트 코드를 보유하며 스펙트럼 전체의 모든 유니코드 포인트를 나타낼 수 있습니다. 반면에 문자열에는 UTF-8, UTF-16 또는 ISO-8895-1과 같은 인코딩된 텍스트가 포함됩니다. 문자열은 유니코드로 디코딩되고 그 반대의 경우도 마찬가지입니다. 파일과 텍스트 데이터는 항상 인코딩된 문자열로 전송됩니다.

Markdown 모듈은 unicode()를 사용하여 수신 문자열을 검증하여 해당 문자열이 ASCII인지 또는 다시 래핑된 유니코드 문자열인지 확인합니다. Markdown 작성자는 수신 문자열의 인코딩을 결정할 수 없기 때문에 문자열을 전달하기 전에 사용자가 문자열을 유니코드로 디코딩해야 합니다.

유니코드 문자열은 코드 앞에 'u' 접두사를 사용하여 코드에서 선언할 수 있습니다. 끈. 예를 들면 다음과 같습니다.

my_u = u'my ünicôdé strįng'
로그인 후 복사

Gotchas

명시적인 unicode() 호출이 없어도 str에서 Unicode로의 변환이 발생할 수 있습니다. 다음 상황에서는 UnicodeDecodeError 예외가 발생할 수 있습니다.

  • 인코딩 없는 명시적 변환: unicode('€')
  • 유니코드 문자열과 함께 새 스타일 형식 문자열 사용: u"통화는: { }".format('€')
  • 유니코드 문자열과 함께 이전 스타일 형식 문자열 사용: u'The 통화는: %s' % '€'
  • 유니코드에 문자열 추가: u'통화는: ' '€'

입력 및 디코딩

소스 코드: '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 3은 Python 2.x와 약간 다르게 유니코드를 처리합니다. 일반 str은 이제 유니코드 문자열이고 이전 str은 이제 바이트입니다.

Python 3에서 기본 인코딩은 UTF-8이므로 인코딩을 지정하지 않고 바이트 문자열을 디코딩하면 UTF-8이 사용됩니다. 또한 open()은 기본적으로 텍스트 모드에서 작동하여 디코딩된 str(유니코드 문자열)을 반환합니다.

위 내용은 UnicodeDecodeError: 'ascii' 코덱이 Python 2.x에서 바이트를 디코딩할 수 없는 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿