我使用Flask
获得了一个字符串列表作为Facebook API响应posts_json = graph.get_object(id=address, fields="posts.limit(12){message,link,full_picture}")
一些字符串消息是西里尔字母。我需要将此内容发送到GUI,将Facebook API响应解码为unicode,因此我首先尝试对其进行编码,但我编码的任何已知编码都不适用于西里尔文内容。
我试过
item['message'] = post[u'message'].encode('cp850', errors='replace')
结果就像
"message": "??????? ? ??? ?????????? ???????????. ????????????
另外' cp866'和' ascii'用' ??? ...'和' / x ...'结果
我原来的解码信息如下所示:
u'message': u'\u0421 \u0447\u0435\u043c \u043d\u043e\u0441\u0438\u0442\u044c \u0442\u043e\u043f \u0432 \u043f\u0430\u0439\u0435\u0442\u043a\u0438? \u041a\u0430\u043a
我可以使用什么来正确编码西里尔字母? 提前谢谢。
注意:我使用&utff-8'。
成功编码的所有其他内容更新:' utf-8'把我的信息转化为 ' \ xd0 \ xa1 \ xd1 \ x87 \ xd0 \ xb5 \ xd0 \ xbc \ xd0 \ xbd \ xd0 \ xbe \ xd1 \ x81 \ xd0 \ xb8 \ xd1 \ x82 \ xd1 \ x8c \ xd1 \ x82 \ xd0 \ xbe \ xd0 \ xbf \ xd0 \ xb2'
答案 0 :(得分:1)
您的原始解码消息"已经是unicode了。你可以通过' u'在字符串的开头。
正如a comment on a related StackOverflow question所解释的那样:
Python只显示unicode转义以避免混淆。例如,如果你有一个从右到左开关的字符串,那么如果你得到一个unicode转义,那么理解dict的内容要比一切都突然倒退容易得多。 / p>
您不应该进行任何编码或解码,并且应该能够按原样使用该字符串。试试print(post["message"])
。