当我这样做时:
text = u"奥巴马讲话"
for c in text:
print c
我得到了预期的结果:
奥
巴
马
讲
话
但如果我这样做:
text = u"€"
for c in text:
print c
我得到了:
�
�
€
我期待得到:
€
这是为什么?我认为这与以下事实有关:
In [1]: u"".encode("utf8")
Out[1]: '\xf0\xa4\xad\xa2'
“”使用4个字节进行编码。
如何循环使用具有此类编码的unicode字符串?
像你这样的东西。
答案 0 :(得分:3)
在基本多语言平面之外;它有代码点U + 24B62。这意味着要正确处理它,您需要一个具有sys.maxunicode == 1114111
的Python构建。有关详细信息,请参阅Unicode in Python - just UTF-16?。
如果可以,请升级到Python 3.3,这一切都正确处理。否则,您需要通过配对低代理代码点和高代理代码点来实现UTF-16处理:How to iterate over Unicode characters in Python 3?