24439


Pythonで下記のようなutf8のjsonをファイルから読み込んで表示しましたが、下記エラーのため表示できませんでした。

[code]

    [
        {
            "id": "1",
            "idx": 1,
            "text": "あああああ"
        }
    ]
    
[/code]

エラー

[code]

    Traceback (most recent call last):
      File "./index.cgi", line 23, in <module>
        print d['text']
    UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
    
[/code]

idとidxは問題なく表示されますがtextはこのエラーが出ます。どのようにすれば表示できるのでしょうか。

jsonの扱いはsimplejsonで下記のようにファイルを読み込んでいます。

[code]

    f = open('sample.json', 'r')
    data = json.load(f)
    
[/code]

PythonはPython2.5.1です。  
よろしくお願いします。

index.cgi

[code]

    #!/usr/bin/python
    #coding:utf-8
    
    
    import sys
    import cgitb
    cgitb.enable()
    try:
        import json
    except ImportError:
        import simplejson as json
    
    print 'Content-Type: text/html\n'
    print
    
    f = open('sample.json', 'r')
    data = json.loads(f.read().decode('utf-8'))
    f.close()
    
    
    for d in data:
        print d['text']
    
    #print json.dumps(data, ensure_ascii=False).encode('utf8')
    
[/code]


CC BY-SA 3.0
2016-04-29T04:53:21.310
24438
2016-10-25T08:28:11.743
2016-04-29T06:03:15.743
7232
7232
question
python json
Python simplejsonでunicodeのjsonを扱う('ascii' codec can't encode characters in position 0-1: ordinal not in range(128))


文字コードを指定してファイルを読む必要があります．

[code]

    import codecs
    
    f = codecs.open('sample.json', 'r', 'utf-8')
    data = json.load(f)
    
[/code]

としてみて下さい．


CC BY-SA 3.0
2016-04-29T05:15:42.413
24439
2016-04-29T05:15:42.413
14418
24438
answer