표준 라이브러리의 모든 것이 Python 3.0에서 문자열을 유니코드로 처리합니까?

StackOverflow https://stackoverflow.com/questions/91205

문제

Python(3.0부터)이 유니코드 기반이므로 표준 라이브러리가 어떻게 작동할지 약간 혼란스럽습니다.CGI 및 urllib와 같은 모듈은 유니코드 문자열을 사용합니까, 아니면 새로운 '바이트' 유형을 사용하고 인코딩된 데이터만 제공합니까?

도움이 되었습니까?

해결책

MIME 인코딩된 메일 메시지, URL, XML 문서 등과 같은 많은 항목이 논리적으로 다음과 같이 반환되어야 합니다. bytes 문자열이 아닙니다.라이브러리가 Python 3에 고정되기 시작하고 사람들이 Python 3에 대해 더 잘 인식해야 한다는 것을 알게 되면서 이는 약간의 경악을 야기할 수 있습니다. bytes/string 전환수에 비해 str/unicode ...

다른 팁

이 질문(그리고 일반적으로 Python)의 가장 큰 장점 중 하나는 인터프리터를 그냥 조작할 수 있다는 것입니다! Python 3.0 rc1은 현재 다운로드 가능합니다..

>>> import urllib.request
>>> fh = urllib.request.urlopen('http://www.python.org/')
>>> print(type(fh.read(100)))
<class 'bytes'>

여기서는 2단계 댄스가 있을 것입니다.보다 Python 3000과 당신.

1단계는 3.0 미만에서 실행하는 것입니다.

2단계는 아마도 좀 더 합리적인 작업을 수행하기 위해 API를 다시 생각하는 것입니다.

가장 그럴듯한 과정은 라이브러리가 이전 작업 방식과 가능한 한 호환성을 유지하기 위해 유니코드 문자열로 전환한다는 것입니다.

그러면 아마도 일부는 다양한 프로토콜에 대한 RFC 표준을 보다 적절하게 구현하기 위해 바이트로 전환할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top