2017-01-15 5 views
0

でキリル応答私は、文字列メッセージのいくつかはキリルあるフラスコエンコードログインfacebook-SDKのpython 2.7

posts_json = graph.get_object(id=address, fields="posts.limit(12){message,link,full_picture}") 

を使用してFacebookのAPIの応答として文字列のリストを持っています。私はこのコンテンツをGUIに送る必要があり、FacebookのAPIレスポンスはユニコードにデコードされていますので、最初にエンコードしようとしていますが、私のエンコーディングに知られているものはキリル文字のコンテンツでは機能しません。

私は結果が 'CP866' と '??? ...' と '/ X ...' 結果に 'ASCII' も、

"message": "??????? ? ??? ?????????? ???????????. ???????????? 

のようなものです

item['message'] = post[u'message'].encode('cp850', errors='replace') 

を試してみました。

私の元に復号のメッセージは次のようになります。

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 

は私がきちんとキリルエンコードするために何を使用することができますか? ありがとうございます。

注:他のすべてのコンテンツは「utf-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

アイテム['message']を試しましたか?decode( 'utf-8')? – metmirr

+0

他のフィールドはすべて 'utf-8'でエンコードされていますが、キリル文字は含まれていないため、キリル文字に使用するエンコードタイプを質問しています。 –

+0

_ "なぜ使用するエンコードタイプPythonでキリル文字 "_ - UTF - 8、もちろん。それ以外はそれほど意味がありません。 – CBroe

答えて

1

「オリジナルのデコード済みメッセージ」はすでにユニコードです。文字列の先頭に 'u'を表示することができます。 a comment on a related StackOverflow questionとして

は説明する:

Pythonは単に混乱を避けるために、Unicodeのエスケープを表示します。たとえば、右から左に切り替える文字列がある場合、すべてが突然後方にある場合よりもユニコードのエスケープを取得すると、辞書の内容を理解するのがずっと簡単です。

エンコードやデコードを行う必要はありません。その文字列をそのまま使用することができます。お試しくださいprint(post["message"])

+0

私はユニコードについて知っている、実際には、私の質問の理由は、クライアント側でこのメッセージを表示する際の主な問題であるため、この文字列をGUIに渡すためにこの文字列をデコード(またはエンコード)する方法です。 ところで、pythonのprint(...)は '/ u ...'を表示します。 –

+0

'print(u '\ u043d \ u043e \ u0441 \ u0438 \ u0442 \ u044c'')は'носить'を表示しませんか?どのバージョンのPythonを使用していますか? – Martey

+0

私はちょうど 'print post [u'message ']'工事を使うと正しく、 'print my_json_with_cyrillic_mes_inside'にもかかわらずキリル文字で表示します。ですから、問題はGUIに変数を渡す方法にあります。ありがとうございました –