2012-04-02 15 views
0

私は辞書を含むリストを持っています。各辞書には、文字列を含む属性descriptionがあります。私はこの文字列を辞書に入れて、それが正しいエンコーディングを持っていることを知っています。また、設定した後にdescriptionの値を印刷すると、文字列はまだよく見えます。 は、それから私はJSONEncoder.encode(myList)を使用して、以下のコードを使用してファイルに私にこのJSON文字列を保存します。私は、ファイルを開いたときに文字が間違って表示されファイルに保存するとエンコードが失われる

その後
file_obj = open("file.txt", "w") 
file_obj.write(text) 
file_obj.close() 

、。例えば。 \u00e5,\u00f8dおよび\u00e6

これはなぜ、どのように私はこれを修正することができますか?

答えて

3

JSONエンコーディングは、JSONデコードを介して読み込むことができる文字列を作成するように設計されています。 「ファイルを開いたときの外観」は、「JSONデコーダで実行するとどのように見えるか」とは異なります。つまり、JSONデコーダは\u####エスケープもデコードします。

\u####エスケープではなく、ファイルにrawユニコードを含める場合は、JSONエンコーダを使用しないでください。それはそのために設計されたものではありません。

2

jsonensure_ascii=Falseを渡すと、unicodeが生成されます。保存時に正しく符号化するには、codecs.open()を使用する必要があります。

関連する問題