12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelでJsonのレスポンスが文字化けしてしまう時の解決法

Last updated at Posted at 2020-12-13

前提条件

Laravel 6.20.4
PHP 7.3.24

問題

Laravel6でJsonのレスポンスが文字化けしてしまう。
本来であれば、nameの部分が鈴木と表示される。
スクリーンショット 2020-12-13 11.59.26.png

解決方法

app\Http\Controllers\Controller.phpにJSON_UNESCAPED_UNICODEを設定したレスポンスを返すfunctionを作る。

Controller.php
<?php

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function jsonResponse($data, $code = 200)
    {
        return response()->json(
            $data,
            $code,
            ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
            JSON_UNESCAPED_UNICODE
        );
    }
}

使い方
全てのコントローラーがController.phpを継承しているので、
$thisを使ってjsonResponseを呼び出すことができる。

UserController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return $this->jsonResponse($users);
    }
}

正しく表示されました。
スクリーンショット 2020-12-13 12.06.23.png

参考記事

12
6
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
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?