오류 메시지는 정확히 무엇이 잘못되었는지 알려줍니다. 파이썬 인터프리터는 비 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
이 인코딩에서 기술적으로 허용되지 않는 바이트 시퀀스가 없기 때문에 오류 메시지를 확실히 제거하지만 실제 인코딩이 다른 코드 인 경우 코드가 해석 될 때 완전히 잘못된 결과를 생성 할 수 있습니다. 인코딩을 선언 할 때 파일의 인코딩을 확실하게 알고 있어야합니다.