今回は『Flaskで日本語のレスポンスが文字化けする問題』を解決する方法のメモです。
元のコード
from flask import Flask, jsonify
app = Flask(import_name=__name__)
@app.route('/')
def index():
return jsonify({
'message': 'こんにちは、世界!'
})
if __name__ == '__main__':
app.run(
debug=True,
host='127.0.0.1',
port=8000,
)
{
"message": "\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c\uff01"
}
解決方法
よく出てくるのはこのコード
app.config['JSON_AS_ASCII'] = False
これは古い書き方で、現在のバージョン(2.3.2)では以下のように書きます。
app.json.ensure_ascii = False
from flask import Flask, jsonify
app = Flask(import_name=__name__)
app.json.ensure_ascii = False
@app.route('/')
def index():
return jsonify({
'message': 'こんにちは、世界!'
})
if __name__ == '__main__':
app.run(
debug=True,
host='127.0.0.1',
port=8000,
)
{
"message": "こんにちは、世界!"
}
参考
flask.json.provider.DefaultJSONProvider(app)
Replace non-ASCII characters with escape sequences. This may be more compatible with some clients, but can be disabled for better performance and size.
ASCII以外の文字をエスケープシーケンスに置き換えます。これは一部のクライアントとの互換性が高いかもしれませんが、パフォーマンスとサイズを向上させるために無効にすることができます。