오류 메시지는 정확히 무엇이 잘못되었는지 알려줍니다. 파이썬 인터프리터는 비 ASCII 문자의 인코딩을 알아야합니다.
U + 00A3 을 반환 하려면 다음과 같이 말할 수 있습니다.
return u'\u00a3'
이것은 유니 코드 이스케이프 시퀀스를 통해 순수한 ASCII로이 문자를 나타냅니다. 리터럴 바이트 0xA3을 포함하는 바이트 문자열을 반환하려는 경우
return b'\xa3'
(파이썬 2에서는 b암시 적이지만 명시 적은 암시 적보다 낫습니다).
오류 메시지의 링크 된 PEP는 Python에게 "이 파일은 순수한 ASCII가 아닙니다. 여기에 내가 사용중인 인코딩이 있습니다"라고 알려주는 방법을 정확하게 알려줍니다. 인코딩이 UTF-8 인 경우
# coding=utf-8
또는 이맥스 호환
# -*- encoding: utf-8 -*-
편집기에서이 파일을 저장하는 데 사용하는 인코딩을 모르는 경우 16 진 편집기 및 인터넷 검색과 같은 형식으로 검사하십시오. 스택 오버플로문자 인코딩태그에는 자세한 정보와 문제 해결 팁 이 포함 된 태그 정보 페이지 가 있습니다.
7 비트 ASCII 범위 (0x00-0x7F) 이외의 많은 단어에서 파이썬은 일련의 바이트가 나타내는 문자열을 추측 할 수 없으며 추측해서는 안됩니다. https://tripleee.github.io/8bit#a3 은 바이트 0xA3에 대한 21 가지 가능한 해석을 보여 주며 레거시 8 비트 인코딩에서만 제공됩니다. 그러나 멀티 바이트 인코딩의 첫 번째 바이트 일 수도 있습니다. 그러나 실제로는 실제로 Latin-1을 사용하고 있다고 생각하므로
# coding: latin-1
소스 파일의 첫 번째 또는 두 번째 줄로. 어쨌든 바이트가 어떤 문자를 나타내는 지 알지 못하면 인간도 이것을 추측 할 수 없습니다.
주의 사항 : coding: latin-1이 인코딩에서 기술적으로 허용되지 않는 바이트 시퀀스가 없기 때문에 오류 메시지를 확실히 제거하지만 실제 인코딩이 다른 코드 인 경우 코드가 해석 될 때 완전히 잘못된 결과를 생성 할 수 있습니다. 인코딩을 선언 할 때 파일의 인코딩을 확실하게 알고 있어야합니다.