python 2.7.3을 사용하면 다음은 TypeError를 발생시키지 않습니다.왜 unicode (u '')가 errors 매개 변수를 전달합니까? TypeError
>>> unicode(u'')
u''
그러나 통과 errors
매개 변수는 TypeError: decoding Unicode is not supported
>>> unicode(u'',errors='replace')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: decoding Unicode is not supported
>>> unicode(u'',errors='ignore')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: decoding Unicode is not supported
>>> unicode(u'',errors='strict')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: decoding Unicode is not supported
이 너무 다르게 작동 왜 모든 추측을 제기? IMO,이 기능은 unicode
기능에 놀라운 놀라운 기능입니다. 기능 PyUnicode_FromEncodedObject
에서 Python/unicodeobect.c에서
-
브라우징 파이썬 소스 코드, (난 그냥 올바른 코드 경로를 따라 야하는 추측을 취하고는) 우리는 오류 문자열
"decoding Unicode is not supported"
을 찾을 수 있습니다.PyUnicode_Check(obj)
이 0이 아닌 값을 반환하면 오류 문자열이 설정됩니다. Include/object.h에,
PyUnicode_Check
는 파이썬 코드 인해errors
매개 변수를 전달하는 다른 코드 경로를 사용 어디 찾을 수 없습니다, 그러나 표현(((Py_TYPE(obj))->tp_flags & (Py_TPFLAGS_UNICODE_SUBCLASS)) != 0)
에
을 평가합니다.
을하지만 당신은 자신의 예를 보면, 그는 빈 문자열을 전달한다 : 당신이 (ASCII 기본값) 다른 인코딩을 사용하고자하는 경우
. – thefourtheye
나는 왜'unicode()'가'errors' 매개 변수 대'not '매개 변수가 주어 졌을 때 다르게 동작하는지에 대해 더 많은 질문이 있다고 생각합니다. –
그는 빈 문자열의 유니 코드를 전달하며, 이는 여전히 유니 코드라고 가정합니다. 나는'Unicode()'가 실제 유니 코드 타입 데이터를 가져 가야한다고 생각하지 않는다. – ForgetfulFellow