代码之家  ›  专栏  ›  技术社区  ›  Michael Emerson

Laravel无法获得正确解析外来字符的响应

  •  0
  • Michael Emerson  · 技术社区  · 8 年前

    在寻找了一个合适的答案后,我发现人们提供的解决方案不起作用,所以我在这里发帖,希望能得到一些帮助。

    我通过以下方式获得用户结果:

    $users = $this->users->getAll($params);
    

    然后使用json编码的集合返回响应:

    return response()->collection($users);
    

    但如果在结果中返回上述用户,则会出现以下错误:

    响应内容必须是字符串或对象 __toString(),给定“boolean”。

    JSON_UNESCAPED_UNICODE 选项,就像许多人在解决方案中建议的那样,如下所示:

    return response()->json($users, 200, ['Content-type'=> 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE);
    

    但事实证明,在尝试记录之后,响应不会返回UTF-8。然而,据我所知,数据库是UTF-8编码的,所以我不明白这里发生了什么。

    问题是,即使我将字符更改为常规的a,未来仍可能有用户的名称中包含外来字符,我希望有适当的方法来处理此问题。

    感谢您的帮助。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Md Nasir Fardoush    8 年前

    utf8mb4_unicode_ci 对我来说很好。
    如果您提到您的数据库排序规则,则会使您的问题更具可读性。

        2
  •  0
  •   Saibal Roy    8 年前

    'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => false,
            'engine' => null,
        ],
    

    现在将列排序规则设置为:utf8mb4\u unicode\u ci。

    推荐文章