先引用一段教程里的话:
Python 2.6中这种自由混合字符串类型的方法,只有在字符串和unicode对象的编码类型兼容的情况下才有效:
>>> S = 'A\xC4B\xE8C' # Can't mix if incompatible
>>> U = u'A\xC4B\xE8C'
>>> S + U
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)
>>> S.decode('latin-1') + U # Manual conversion still required
u'A\xc4B\xe8CA\xc4B\xe8C'
>>> print S.decode('latin-1') + U
AÄBèCAÄBèC
问题是:
1.S编码类型是ascii吧?U编码类型是latin-1吧?
2.latin-1是兼容ascii的吧,为什么还需要手动转换呢?
Python 2.6中这种自由混合字符串类型的方法,只有在字符串和unicode对象的编码类型兼容的情况下才有效:
>>> S = 'A\xC4B\xE8C' # Can't mix if incompatible
>>> U = u'A\xC4B\xE8C'
>>> S + U
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 1: ordinal not in range(128)
>>> S.decode('latin-1') + U # Manual conversion still required
u'A\xc4B\xe8CA\xc4B\xe8C'
>>> print S.decode('latin-1') + U
AÄBèCAÄBèC
问题是:
1.S编码类型是ascii吧?U编码类型是latin-1吧?
2.latin-1是兼容ascii的吧,为什么还需要手动转换呢?