Twitter 中的 Unicode 字符 (Python)
Unicode Characters in Twitter (Python)
我已经学会了如何使用 Python 发送推文,但我想知道是否可以在推文中发送表情符号或其他特殊的 Unicode 字符。
例如,当我尝试发送 u'1F430' 时,它在推文中仅显示为“1F430”。
u'1F430' 是文字串“1F430”。你想得到什么性格?通常,您可以使用“\x20”将文字字节放入 python 字符串中,例如
>>> print(b"#\x20#")
# #
2个哈希之间十六进制值为20(十进制32)的字节。字节默认解码为ASCII,ASCII char (hex) 20是一个space.
>>> print(u"#\u0020#")
# #
>>> print(u"#\U0001F430#")
# #
2 个哈希中间的 Unicode 代码点 20(单个 space)
有关详细信息,请参阅 https://docs.python.org/3.3/howto/unicode.html。注意:在很多情况下,python 会在字节和 unicode 之间隐式转换(使用 ASCII 编码),这可能会让人有些困惑,这可以暂时隐藏问题。
>>> len(u'1f430')
5
>>> len(u'\U0001F430')
1 # the latter might be equal to two in Python 2 on a narrow build (Windows, OS X)
前者为5个字符,后者为单个字符
如果您想在 Python 源代码中指定字符,那么您可以使用其名称以提高可读性:
>>> print(u"\N{RABBIT FACE}")
注意:它可能无法在 Windows 控制台中运行。要在此处 显示 非 BMP Unicode 字符,您可以使用 win-unicode-console + ConEmu.
如果您从文件、网络等读取它,那么这个字符与其他任何字符都没有区别:要将字节解码为 Unicode 文本,您应该指定字符编码,例如:
import io
with io.open('filename', encoding='utf-8') as file:
text = file.read()
具体使用哪种编码取决于来源,例如,参见
我已经学会了如何使用 Python 发送推文,但我想知道是否可以在推文中发送表情符号或其他特殊的 Unicode 字符。
例如,当我尝试发送 u'1F430' 时,它在推文中仅显示为“1F430”。
u'1F430' 是文字串“1F430”。你想得到什么性格?通常,您可以使用“\x20”将文字字节放入 python 字符串中,例如
>>> print(b"#\x20#")
# #
2个哈希之间十六进制值为20(十进制32)的字节。字节默认解码为ASCII,ASCII char (hex) 20是一个space.
>>> print(u"#\u0020#")
# #
>>> print(u"#\U0001F430#")
# #
2 个哈希中间的 Unicode 代码点 20(单个 space)
有关详细信息,请参阅 https://docs.python.org/3.3/howto/unicode.html。注意:在很多情况下,python 会在字节和 unicode 之间隐式转换(使用 ASCII 编码),这可能会让人有些困惑,这可以暂时隐藏问题。
>>> len(u'1f430')
5
>>> len(u'\U0001F430')
1 # the latter might be equal to two in Python 2 on a narrow build (Windows, OS X)
前者为5个字符,后者为单个字符
如果您想在 Python 源代码中指定字符,那么您可以使用其名称以提高可读性:
>>> print(u"\N{RABBIT FACE}")
注意:它可能无法在 Windows 控制台中运行。要在此处 显示 非 BMP Unicode 字符,您可以使用 win-unicode-console + ConEmu.
如果您从文件、网络等读取它,那么这个字符与其他任何字符都没有区别:要将字节解码为 Unicode 文本,您应该指定字符编码,例如:
import io
with io.open('filename', encoding='utf-8') as file:
text = file.read()
具体使用哪种编码取决于来源,例如,参见