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년 기준)python
Windows 및 대부분의 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
'programing' 카테고리의 다른 글
PHP: Internet Explorer 6, 7, 8, 또는 9의 경우 (0) | 2023.01.15 |
---|---|
JUnit 테스트 케이스에서 MySQL을 실행하는 방법이 있습니까? (0) | 2023.01.15 |
업데이트 부분에서 새 값과 이전 값을 모두 사용할 수 있도록 UPSERT를 수행하는 방법 (0) | 2023.01.06 |
AttributeError: 'module' 개체에 속성이 없습니다. (0) | 2023.01.06 |
중첩 루프 차단 (0) | 2023.01.05 |