代わりに標準ライブラリjson
モジュールensure_ascii
を使用し、エンコード時にキーワードパラメータをFalseに設定するか、次のコマンドで同じことを行いflask.json.dumps()
ます。
>>> data = u'\u10e2\u10d4\u10e1\u10e2'
>>> import json
>>> json.dumps(data)
'"\\u10e2\\u10d4\\u10e1\\u10e2"'
>>> json.dumps(data, ensure_ascii=False)
u'"\u10e2\u10d4\u10e1\u10e2"'
>>> print json.dumps(data, ensure_ascii=False)
"ტესტ"
>>> json.dumps(data, ensure_ascii=False).encode('utf8')
'"\xe1\x83\xa2\xe1\x83\x94\xe1\x83\xa1\xe1\x83\xa2"'
その場合、関数はオブジェクトをdumps()
返すため、結果をUTF8に明示的にエンコードする必要があることに注意してください。unicode
Flaskアプリの設定でFalseに設定することで、これをデフォルトにする(そしてjsonify()
再度使用する)ことができます。JSON_AS_ASCII
警告:ASCIIセーフではない信頼できないデータをJSONに含めないでください。その後、HTMLテンプレートに補間するか、JSONP APIで使用してください。これにより、構文エラーが発生したり、クロスサイトスクリプティングの脆弱性が発生したりする可能性があります。これは、JSONがJavascriptの厳密なサブセットではなく、 ASCIIセーフエンコーディングを無効にすると、U+2028およびU+2029セパレーターがエスケープされないため\u2028
です\u2029
。