Laravel7 Middlewareを使ってJSONの日本語文字化けに対応する

Laravel7 Middlewareを使ってJSONの日本語文字化けに対応する

JSONデータをGETした際に日本語だと文字化けすることがあるので対処法を記述してます。日本語がユニコードでエスケープ されているため発生。

環境

  • OS CentOS Linux release 8.0.1905 (Core)
  • Composer 1.10.5
  • PHP 7.4.5
  • Percona Server Ver 8.0.19-10
  • Laravel Framework 7.6.2

※CentOs8に Laravel のインストールはこちら

文字化け

日本語がユニコードでエスケープ(\uxxx)されているため下記の画像のようになります。

Middleware作成

Unicode( ユニコード )エスケープをさせないため、Middlewareを利用して、エンコードのオプションに「 JSON_UNESCAPED_UNICODE 」を追加してresponseデータを処理します。

middlewareを作成します。

app/Http/Middleware/JpJsonResponse.phpを下記の通りに編集します。

Kernel追加

作成したmiddlewareをKernelに追加します。
app/Http配下にある「Kernel.php」に下記を追加します。

あとはControllerの __constructに追加して利用します。

文字化けが解消されていることが確認できます。