gpt4 book ai didi

python - 如何在 Python 中获得可靠的 unicode 字符数?

转载 作者:太空狗 更新时间:2023-10-29 21:04:06 27 4
gpt4 key购买 nike

Google App Engine 使用 Python 2.5.2,显然启用了 UCS4。但是 GAE 数据存储在内部使用 UTF-8。因此,如果您将 u'\ud834\udd0c'(长度为 2)存储到数据存储区,当您检索它时,您会得到 '\U0001d10c'(长度为 1)。我正在尝试以一种在存储前后给出相同结果的方式计算字符串中 unicode 字符的数量。因此,我在收到字符串(从 u'\ud834\udd0c' 到 '\U0001d10c')后立即对其进行规范化,然后再计算其长度并将其放入数据存储区。我知道我可以将它编码为 UTF-8,然后再次解码,但有没有更直接/更有效的方法?

最佳答案

I know I can just encode it to UTF-8 and then decode again

是的,当您输入“UCS-4 字符串中的 UTF-16 代理项”时,这是解决问题的常用习惯用法。但正如 Mechanical snail 所说,此输入格式错误,您应该优先修复生成它的任何内容。

is there a more straightforward/efficient way?

好吧...您可以使用正则表达式手动完成,例如:

re.sub(
u'([\uD800-\uDBFF])([\uDC00-\uDFFF])',
lambda m: unichr((ord(m.group(1))-0xD800<<10)+ord(m.group(2))-0xDC00+0x10000),
s
)

当然不会更直接......我也怀疑它是否真的更有效率!

关于python - 如何在 Python 中获得可靠的 unicode 字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6922480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com