LoginSignup
0
0

【Python】JsonResponseでエンコードの文字化けが起きてしまう場合の原因と解決方法

Posted at

エラー概要

  • Django(Python)のコードで、JsonResponseを使って以下のように実装しておくとします。
return JsonResponse({'status': 'errorです'})
  • しかし、ログでは以下のように表示されてしまいます。文字化け?みたいな現象が起きています。
{"status": "error\u3067\u3059"}

原因

  • 調べてみると、これはJsonResponseがUnicodeエスケープシーケンスを自動的にエンコードするために発生するエラーらしい。
  • Unicode文字列をエンコードしないように指定することで解決できます。

解決策

  • 以下のように変更することで、日本語の文字列が正しく表示されるようになります。
return JsonResponse({'status': 'errorです'}, json_dumps_params={'ensure_ascii': False})
  • json_dumps_paramsは、Pythonのjson.dumps()関数に渡すためのパラメーターを指定するためのオプションです。
  • ensure_asciiはデフォルトではTrueですがFalseに設定することで、非ASCII文字をエスケープシーケンスではなく、そのままのUnicode文字列としてシリアル化するため、文字化けが解決されます。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0