这是对如何将包含Unicode代理对的JSON编码数据转换为字符串?的跟进。在那个问题中,提问者有一个由
所以这是我的情况:假设我有一个普通的Python 3 Unicode字符串,其中包含一个代理对:
我该如何处理这个字符串以获得emoji的表示形式? 我想要获得类似于以下内容的东西:
通常我会遇到类似于
我正在Linux上运行Python 3.5.1,
json.dumps()
编码的文件,其中一个表情符号被表示为代理对- \ud83d\ude4f
。 他们在读取文件并正确翻译表情符号方面遇到了问题,正确的 答案 是从文件中使用json.loads()
加载每一行,然后json
模块会处理从代理对到(我假设为UTF8编码的)表情符号的转换。所以这是我的情况:假设我有一个普通的Python 3 Unicode字符串,其中包含一个代理对:
emoji = "This is \ud83d\ude4f, an emoji."
我该如何处理这个字符串以获得emoji的表示形式? 我想要获得类似于以下内容的东西:
"This is , an emoji."
# or
"This is \U0001f64f, an emoji."
我已经尝试过:
print(emoji)
print(emoji.encode("utf-8")) # also tried "ascii", "utf-16", and "utf-16-le"
json.loads(emoji) # and `.encode()` with various codecs
通常我会遇到类似于
UnicodeEncodeError: XXX编解码器无法在位置8处对字符'\ud83d'进行编码:代理不允许
的错误。我正在Linux上运行Python 3.5.1,
$LANG
设置为en_US.UTF-8
。我在命令行上的Python解释器和在Sublime Text中运行的IPython内部都运行了这些示例 - 看起来没有任何区别。
tweepy
(以及一般的Twitter)似乎正在做这件事。在这里提到它,希望更多搜索此问题的人能找到这个答案。 - tripleeeftfy.fixes.fix_surrogates(text)
(第三方库)用于删除解码字符串中的'surrogateescape'字符的当前惯用语。 - user202729