programing

SyntaxError: 비ASC함수가 '''을 반환할 때 파일의 II 문자 '\xa3'

randomtip 2023. 1. 15. 12:45
반응형

SyntaxError: 비ASC함수가 '''을 반환할 때 파일의 II 문자 '\xa3'

예를 들어 다음과 같은 기능이 있습니다.

def NewFunction():
    return '£'

앞에 파운드 기호가 있는 것을 인쇄하려고 하면 이 프로그램을 실행하려고 하면 다음 오류 메시지가 나타납니다.

SyntaxError: Non-ASCII character '\xa3' in file 'blah' but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details

반품 기능에 파운드 기호를 어떻게 포함시킬 수 있는지 알려주실 수 있나요? 수업 시간에 합니다.또한 이 제품은'__str__'파운드 기호가 포함된 부분.

오류 때문에 PEP가 표시되는 것을 읽을 것을 권장합니다.문제는 코드가 ASCII 인코딩을 사용하려고 하는데 파운드 기호가 ASCII 문자가 아니라는 것입니다.UTF-8은 UTF-8을 사용합니다. '넣다'를 넣으면 됩니다.# -*- coding: utf-8 -*-맨에...파이를 만들다고급화를 위해 코드에서 문자열 단위로 인코딩을 정의할 수도 있습니다.다만, 코드에 파운드 기호 리터럴을 넣으려고 하는 경우는, 파일 전체에 대응하는 부호화가 필요합니다.

.py 스크립트의 맨 위에 다음 두 줄을 추가하면 효과가 있었습니다(첫 줄은 필수).

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

, 먼저 '어울리지 않다'를 넣으세요.# -*- coding: utf-8 -*-행 붙이고 , 「이렇게 하면 안 된다」, 「이렇게 하면 안 된다」를 사용합니다.u'foo'ASCII 유니코드

def NewFunction():
    return u'£'

또는 Python 2.6 이후 이용 가능한 마법을 사용하여 자동으로 만들 수도 있습니다.

from __future__ import unicode_literals

에러 메세지는, 무엇이 문제인지 정확하게 나타내고 있습니다.Python 인터프리터는 비 ASC의 인코딩을 알아야 합니다.II 캐릭터

U+00A3를 반환하고 싶다면 다음과 같이 하십시오.

return u'\u00a3'

유니코드 이스케이프 시퀀스를 사용하여 순수 ASCII로 이 문자를 나타냅니다.리터럴 바이트 0xA3을 포함하는 바이트 문자열을 반환하려면 다음 절차를 수행합니다.

return b'\xa3'

(서 Python 는 Python 2입니다b는 암묵적이지만, 암묵적인 것보다 명시적인 것이 좋습니다).

에러 메시지의 링크된 PEP는 Python에게 "이 파일은 순수한 ASC가 아닙니다.II; 사용하고 있는 부호화는 다음과 같습니다."인코딩이 UTF-8일 경우,

# coding=utf-8

또는 Emacs와 호환되는

# -*- encoding: utf-8 -*-

에디터가 이 파일을 저장할 때 어떤 인코딩을 사용하는지 모를 경우 16진수 에디터 및 구글링과 같은 방법으로 검토하십시오.Stack Overflow 문자 태그에는 태그 정보 페이지가 있으며 자세한 정보와 트러블 슈팅 힌트가 포함되어 있습니다.

7비트 ASCII 범위(0x00-0x7F)를 벗어나면 Python은 바이트 시퀀스가 나타내는 문자열을 추측할 수 없습니다.https://tripleee.github.io/8bit#a3은 기존의 8비트 부호화에서 나온 바이트 0xA3에 대해 가능한 21개의 해석을 보여줍니다.다만, 멀티바이트 부호화의 첫 번째 바이트가 될 수도 있습니다.하지만 실제로 라틴-1을 사용하고 있는 것 같기 때문에

# coding: latin-1

소스 파일의 첫 번째 줄 또는 두 번째 줄로 지정합니다.어쨌든, 바이트가 어떤 문자를 나타내야 하는지 알지 못한다면, 인간도 이것을 추측할 수 없을 것이다.

경고:coding: latin-1는 에러 메시지를 확실히 삭제합니다(이 부호화에서는 기술적으로 허용되지 않는 바이트시퀀스가 없기 때문에).그러나 실제 부호화가 다른 것일 경우 코드가 해석될 때 완전히 잘못된 결과가 발생할 수 있습니다.인코딩을 선언할 때는 파일의 인코딩을 확실히 알아야 합니다.

대본에 다음 두 줄을 추가하면 문제가 해결되었습니다.

# !/usr/bin/python
# coding=utf-8

도움이 되었으면 좋겠다!

Python 2 인터프리터로 Python 3 파일을 실행하려고 합니다.현재(2019년 기준)pythonWindows 및 대부분의 Linux 배포판에 두 버전이 모두 설치된 경우 명령어는 기본적으로 Python 2로 설정됩니다.

그러나 실제로 Python 2 스크립트를 사용하고 있는 경우, 이 페이지 솔루션에서 아직 언급되지 않은 것은 UTF-8+BOM 인코딩으로 파일을 다시 저장하는 것입니다. 그러면 파일 시작 부분에 3개의 특수 바이트가 추가됩니다. 그러면 파일 인코딩에 대해 Python 인터프리터(및 텍스트 에디터)에게 명시적으로 알립니다.

언급URL : https://stackoverflow.com/questions/10589620/syntaxerror-non-ascii-character-xa3-in-file-when-function-returns-%c2%a3

반응형