decode
유니 코드 문자열 의 방법에는 실제로 응용 프로그램이 전혀 없습니다 (어떤 이유로 유니 코드 문자열에 텍스트가 아닌 데이터가없는 경우는 제외하십시오-아래 참조). 그것은 역사적 이유로 주로 거기에 있다고 생각합니다. 파이썬 3에서는 완전히 사라졌습니다.
unicode().decode()
기본 (ascii) 코덱 을 사용하여 암시 적 인코딩 을 수행합니다 s
. 다음과 같이 확인하십시오.
>>> s = u'ö'
>>> s.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
>>> s.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0:
ordinal not in range(128)
오류 메시지는 정확히 동일합니다.
들어 str().encode()
는 주변의 다른 방법 - 그것은 암시 적 시도 디코딩 의 s
기본 인코딩을 :
>>> s = 'ö'
>>> s.decode('utf-8')
u'\xf6'
>>> s.encode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0:
ordinal not in range(128)
이렇게 사용하면 str().encode()
불필요합니다.
그러나 유용한 후자의 방법의 또 다른 응용이 있습니다. 문자 세트와 관련이없는 인코딩 이 있으므로 8 비트 문자열에 의미있는 방식으로 적용 할 수 있습니다.
>>> s.encode('zip')
'x\x9c;\xbc\r\x00\x02>\x01z'
그러나 두 응용 프로그램 모두에 대한 "인코딩"의 모호한 사용법은 어색합니다. 또, 별도의과 byte
와 string
파이썬 3의 유형이 더 이상 문제가되지 않습니다.