2016-07-07 5 views
0

jsonファイルにASCII以外の文字がいくつかあります。リストがあり、リストにはSMΛNのような文字列があります。私はJson unicode issue

with open ("strings.json") as f: 
    t = json.load(f) 

print (t) 

をリストJSONファイルや印刷を読んだとき、私は'SMΛN\n'のような非ASCII文字列ということです。 utf-8などのようにデコードできますか?ユニコード文字を正しく印刷できますか?私はこれを試した

with open ("strings.json",encoding = 'utf-8') as f: 
    t = json.load(f).encode('utf-8').decode('utf-8') 

しかし出力は同じです。

+1

'何を教えてくれlocale'のでしょうか? Unicodeにファイルのバイトとしてエンコードされているもう1つの問題は、読み取り環境での読み取りとその後の出力のエンコーディング(印刷によるロケールに依存する)である。 – Dilettant

+1

あなたのファイル読み取りはUTF-8ではありません。それが正しいエンコードであると確信していますか? – syntonym

+0

@syntonym私は.txtファイルと 'json.dump()'からデータを取り出し、上記のようにjsonから読み込みました。ファイルは暗号化されていますutf-8私はそれについて確信しています – GLHF

答えて

0

Python 3では、によって返されるエンコードを使用して、openがデフォルトで使用されます。これは、米国対応のWindowsではcp1252です。

オープン代わりにUTF-8エンコーディングを使用してファイル:

#coding:utf8 
import json 
L = ['SMΛN'] 

# Generate an example file in UTF-8. 
with open('out.json','w',encoding='utf8') as f: 
    json.dump(L,f,ensure_ascii=False) 

# open with default encoding 
with open('out.json') as f: 
    L = json.load(f) 

print(L) 

# open with correct encoding 
with open('out.json', encoding='utf8') as f: 
    L = json.load(f) 

print(L) 

出力:

はあなたのIDE(フォント)がUnicode文字をサポートしている場合、印刷にのみ正常に動作することを
['SMΛN'] 
['SMΛN'] 

注意が印刷されています。

P.S.別の答えで提案されているように、Windowsのコンソールに出力を表示するにはchcp 65001が壊れ(。これは、Windows 7でした余分な]ラインに注意してください)です。

C:\>chcp 65001 
Active code page: 65001 

C:\>test 
['SMΛN'] 
] 
['SMΛN']