在python 2.7中编码facebook-sdk cyrillic响应

时间:2017-01-15 16:31:04

标签: python python-2.7 facebook-graph-api encoding flask

我使用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'

1 个答案:

答案 0 :(得分:1)

您的原始解码消息"已经是unicode了。你可以通过' u'在字符串的开头。

正如a comment on a related StackOverflow question所解释的那样:

  

Python只显示unicode转义以避免混淆。例如,如果你有一个从右到左开关的字符串,那么如果你得到一个unicode转义,那么理解dict的内容要比一切都突然倒退容易得多。 / p>

您不应该进行任何编码或解码,并且应该能够按原样使用该字符串。试试print(post["message"])