그러나 문자열 개체가 생성 될 때마다 일반 코드 대신 유니 코드 문자열을 사용하도록 Python에 지시 할 수 있습니까?
파이썬에는 파이썬 2와 3에서 두 가지 유형의 문자열, 즉 바이트 순서 (바이트 시퀀스)와 유니 코드 문자열 (유니 코드 코드 시퀀스)이 있습니다.
bytestring = b'abc'
unicode_text = u'abc'
문자열의 유형은 문자 그대로의 파이썬 버전과
from __future__ import unicode_literals
수입의 존재에 따라
'abc'
문자열을 사용하여 만들었습니다. 파이썬 2에서 가져 오기가 없다면
'abc'
리터럴은 바이트 검사를 만들고, 그렇지 않으면 유니 코드 문자열을 만듭니다.
예 : # -*- coding: utf-8 -*-
과 같이 문자열 리터럴에 아스키가 아닌 문자를 사용하는 경우 Python 소스 파일 맨 위에 인코딩 선언을 추가하십시오.
그래서 텍스트 입력을받을 때 unicode()를 사용할 필요가 없습니까?
"텍스트 입력"은 프로그램이 (파일, 네트워크, 명령 줄에서) 어떻게 든 바이트를 받았다면 다음을 의미합니다 : 파이썬을 사용하여 바이트를 암시 적으로 유니 코드로 변환하지 말아야합니다 - - unicode_text = bytestring.decode(character_encoding)
을 사용하여 바이트를 수신하자마자 명시 적으로 처리해야합니다.
역순으로 텍스트를 프로그램 내에 유니 코드로 유지하십시오. 가능한 경우 유니 코드 문자열을 바이트로 변환하십시오 (예 : 네트워크를 통해 텍스트를 전송하는 경우).
바이너리 데이터로 작업하기 위해 bytestrings을 사용하십시오 : 이미지, 압축 된 내용 등. 유니 코드 문자열을 사용하여 파이썬에서 텍스트로 작업하십시오.
파일에서 유니 코드를 읽으려면 use io.open()
(올바른 문자 인코딩을 알고 있어야합니다 (locale.getpreferredencoding(False)
이 아닌 경우).
당신이 네트워크를 통해 유니 코드 텍스트가 해당 프로토콜의 예에 따라 달라질 수 있습니다받을 때 어떤 문자 인코딩을 사용하는,
the charset can be specified in Content-Type http header :
text = data.decode(response.headers.getparam('charset'))
당신은 universal_newlines=True
또는 io.TextIOWrapper()
이 외부 프로세스에서 시작하여 유니 코드 텍스트를 얻을하는 데 사용할 수있는 subprocess
모듈. Windows에서 어떤 문자 인코딩을 사용해야 하는지를 알아내는 것은 쉽지 않습니다 (러시아어를 읽는 경우 여기에서 자세한 내용 참조 : Byte при печати вывода внешней команды).
출처
2016-07-01 12:26:00
jfs
예, 단순히 파이썬 3을 사용하십시오. 유니 코드가 아닌 문자열은 없습니다. –
하지만 파이썬 2를 선호한다면? – Cosinux
@Cosinux. 실제로 파이썬 3을 사용 했습니까? 그렇다면 파이썬 2를 선호하게 만들면서 어떤 문제를 겪었습니까? – ekhumoro