您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python对于单个Unicode字符串返回2的长度

Python对于单个Unicode字符串返回2的长度

您的Python二进制文件是使用UCS-2支持窄版 )进行编译的,并且在内部,使用代理对表示BMP(基本多语言平面)之外的任何内容

这意味着当要求长度时,这些代码显示为2个字符。

如果这很重要,您将不得不重新编译Python二进制文件以使用UCS-4(./configure --enable- unicode=ucs4将启用它),或者升级到Python 3.3或更高版本,在该版本中,Python的Unicode支持被彻底修改以使用在ASCII之间切换的可变宽度Unicode类型。 ,UCS-2和UCS-4(包含的代码点要求)。

在Python 2.7和3.0-3.2版本上,您可以通过检查sys.maxunicode来检测您拥有哪种构建;它2^16-1 == 65535 == 0xFFFF适用于狭窄的UCS-2版本,1114111 == 0x10FFFF适用于广泛的UCS-4版本。在Python 3.3及更高版本中,它始终设置为1114111。

演示:

# Narrow build
$ bin/python -c 'import sys; print sys.maxunicode, len(u"\U0001f44d"), list(u"\U0001f44d")'
65535 2 [u'\ud83d', u'\udc4d']
# Wide build
$ python -c 'import sys; print sys.maxunicode, len(u"\U0001f44d"), list(u"\U0001f44d")'
1114111 1 [u'\U0001f44d']
python 2022/1/1 18:36:37 有236人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶