파이썬에서 비 ASCII 문자를 인쇄하는 방법
-
19-09-2019 - |
문제
Python에서 ASCII가 아닌 문자를 인쇄 (또는 파일에 작성) 할 때 문제가 있습니다. 나는 그것을 무시함으로써 그것을 해결했다 str
내 자신의 객체에서 메소드와 그 안에 "x.encode ( 'utf-8')"만들기, 여기서 x는 객체 내부의 속성입니다.
그러나 제 3 자 객체를 받고 "str (object)"을 만들고이 개체에는 ASCII가 아닌 문자가 있으면 실패합니다.
그래서 질문은 다음과 같습니다. str
객체에 UTF-8 체계화가있는 방법은 일반적으로? Python 2.5.4로 작업하고 있습니다.
해결책 4
UNIX 시스템에서 솔루션을 찾아 환경 VAR을 내보내는 솔루션을 찾았다 고 말하고 싶습니다.
내보내기 lc_ctype = "es : es.utf-8"
이런 식으로 모든 파일은 UTF-8이므로 인쇄물을 만들 수 있으며 잘 작동합니다.
다른 팁
만들 방법이 없습니다 str()
Python <3.0에서 유니 코드로 작업하십시오.
사용 repr(obj)
대신에 str(obj)
. repr()
결과를 ASCII로 변환하여 ASCII 코드 범위에 있지 않은 모든 것을 올바르게 탈출합니다.
그 외에는 유니 코드를 허용하는 파일 객체를 사용하십시오. 따라서 입력 측면에서 인코딩하지 않고 출력 측면에서는 다음과 같습니다.
fileObj = codecs.open( "someFile", "w", "utf-8" )
이제 유니 코드 문자열을 쓸 수 있습니다 fileObj
그리고 필요에 따라 개조 될 것입니다. 같은 일을하기 위해 print
, 당신은 포장해야합니다 sys.stdout
:
import sys, codecs, locale
print str(sys.stdout.encoding)
sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
line = u"\u0411\n"
print type(line), len(line)
sys.stdout.write(line)
print line
당신은 어떻습니까? unicode(object)
그리고 정의 __unicode__
수업에 대한 방법?
그런 다음 유니 코드를 알고 파일에 원하는 것을 인코딩 할 수 있습니다.
none_ascii = '''
███╗ ███╗ ██████╗ ██╗ ██╗██╗███████╗███████╗
████╗ ████║██╔═══██╗██║ ██║██║██╔════╝██╔════╝
██╔████╔██║██║ ██║██║ ██║██║█████╗ ███████╗
██║╚██╔╝██║██║ ██║╚██╗ ██╔╝██║██╔══╝ ╚════██║
██║ ╚═╝ ██║╚██████╔╝ ╚████╔╝ ██║███████╗███████║
╚═╝ ╚═╝ ╚═════╝ ╚═══╝ ╚═╝╚══════╝╚══════╝
'''
print(none_ascii.decode('utf-8'))
코드 상단 에이 두 줄을 붙여 넣으십시오.
- #!/usr/local/bin/python
- # 코딩 : 라틴어 -1
자세한 내용은이 링크를 방문하십시오 https://www.python.org/dev/peps/pep-0263/