循环遍历 Unicode 字符串时出现异常行为

4

当我执行以下操作时:

text = u"奥巴马讲话"
for c in text:
    print c

我得到了预期的结果:
奥
巴
马
讲
话

但是如果我这样做:

text = u"€"
for c in text:
    print c

I got:

�
�
€

我希望你能够提供:


为什么会这样呢?我认为这与以下事实有关:
In [1]: u"".encode("utf8")
Out[1]: '\xf0\xa4\xad\xa2'

"" 使用4个字节进行编码。

如何遍历这种编码的unicode字符串?

类似于 u""。

1个回答

3

字符 U+24B62 不在基本多文种平面内,其代码点为 U+24B62。这意味着要正确处理它,您需要使用 sys.maxunicode == 1114111 的 Python 构建版本。更多详情请参见Python 中的 Unicode - 只有 UTF-16?

如果可以的话,请升级到 Python 3.3 版本,该版本可以正确处理此问题。否则,您需要通过配对低代理项和高代理项代码点来自行实现 UTF-16 处理:Python 3 中如何迭代 Unicode 字符?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接