Pythonでデータとして日本語を扱う場合、デフォルトはUTF-8になります。しかし、JSON形式にしたデータを出力すると、Unicodeエスケープされたバイト列になってしまいます。これはファイルに書いた場合も同様で、Pythonから書き込んだファイルをエディターで開いても、日本語では表示されません。
この問題を解決するためには、Pythonのjson.dump
関数を使用し、ensure_ascii=False
を指定することで、UTF-8のまま書き込むことができます。
with open('test.json', 'w') as f:
json.dump(jsondate, f, indent=2, ensure_ascii=False)
ただし、この方法では、サーバーにCGIでアップロードすると、そこでUnicodeになってしまうため、今回はこれだけでは足りません。そのため、意識してUTF-8とUnicodeをデコード/エンコードしながら使わなければなりません。
例えば、UTF-8の日本語をUnicodeにするには以下のようにエンコードします。
savename ='日本語の文字列'
uni_b_savename = savename.encode('unicode-escape')
これをUTF-8に戻すには、以下のようにデコードします。
uni_b_savename.decode('unicode-escape')
以上のように、PythonでJSONと日本語の文字コードを扱う際には、UnicodeエスケープとUTF-8の変換を意識する必要があります。これにより、Pythonで生成したJSONデータを他のプラットフォームやサーバーで適切に扱うことができます。.