以下是一个简单的测试。`repr` 看起来没问题。但是在 Python 2.6 和 2.7 中,`len` 和 `x for x in` 似乎无法正确地分割 Unicode 文本:
In [1]: u""
Out[1]: u'\U0002f920\U0002f921'
In [2]: [x for x in u""]
Out[2]: [u'\ud87e', u'\udd20', u'\ud87e', u'\udd21']
好消息是 Python 3.3 做得对 ™。
Python 2.x 系列还有希望吗?
sys.maxunicode
的值已经被硬编码为0x10ffff。任何捆绑在OS X发布版中的Python 2版本都是窄字符(但现代的macOS版本使用Python 3)。 - Martijn Pieters