有没有办法在 Python 2.7 中找到字符的 Unicode 代码点?

Arc*_*eca 2 python unicode python-2.7

我正在我的 Python 程序中使用国际音标 (IPA) 符号,这是一组相当奇怪的字符,其 UTF-8 代码的长度范围为 1 到 3 个字节。几年前的这个线程基本上问了相反的问题,它似乎ord(character)可以检索一个十进制数,我可以将其转换为十六进制,然后再转换为代码点,但输入ord()似乎仅限于一个字节。如果我尝试ord()使用任何非 ASCII 字符,?例如,它会输出:

TypeError: ord() expected a character, but a string of length 2 found
Run Code Online (Sandbox Code Playgroud)

由于不再是一个选项,Python 2.7 中是否有任何方法可以找到给定字符的 Unicode 代码点?(然后那个字符必须是一种unicode类型吗?)我的意思也不是只是在 Unicode 表上手动查找它。

Bre*_*arn 5

由于不再是一个选项,Python 2.7 中是否有任何方法可以找到给定字符的 Unicode 代码点?(然后那个字符必须是 unicode 类型吗?)我的意思也不是只是在 Unicode 表上手动查找它。

您只能找到 unicode 对象的 unicode 代码点。要将字节字符串转换为 unicode 对象,请使用 对其进行解码mystr.decode(encoding),其中encoding是字符串的编码。(您知道您的字符串的编码,对吗?它可能是UTF-8。:-) 然后您可以ord根据您已经找到的说明使用。

>>> ord(b"?".decode('utf-8'))
616
Run Code Online (Sandbox Code Playgroud)

顺便说一句,从您的问题来看,听起来您正在使用 UTF-8 编码字节形式的字符串。那可能会很痛苦。您应该在获得字符串后立即将它们解码为 un​​icode 对象,并且仅在需要将它们输出到某处时才对它们进行编码。