s = u'\U0001031e\U0001031d\U0001015c\U0001015d\U00010170\U0001014b\U00010169\U0001016a\U0001016c\xa6\U0001d32c\U0001010c\U0001013a\U00010109\U0001010b\U0001010d\U0001010f\U0001011c\U0001d1ca\U000201b3\U0001016d\U00010184\U00010184'
print s
for a in s: print a, repr(a)
我使用macosxlion,python272,字符串打印得很好,但是循环打印的是'???'以及不正确的u'\u'unicode值。在
以下是打印的值:
^{pr2}$
您正在UCS2 Python构建中打印4字节Unicode字符,这些字符在内部存储为每个2个字符,UTF-16 surrogate pair。其中一个副作用是}之间的值,后跟}范围内的第二个字符。在
\uffff
以上的任何Unicode字符都被打印成这样的对;前导字符是\uD800
和{\uDC00
到{您需要重新编译python以支持宽Unicode字符,或者升级到python3.3,它有一个新的内部Unicode表示,可以根据需要在1、2和4字节宽的字符之间切换。在
您可以通过查看
sys.maxunicode
来测试您的python unicode支持;如果该系统值等于65535
,那么您的构建范围很窄(默认),在宽构建中,该值为1114111。在Mac的默认python是窄Unicode构建;最新的Linux发行版启用宽Unicode标志。在
相关问题 更多 >
编程相关推荐