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



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

我有一个用户数据库,它将在目录中按名称的第一个字母列出。但是,有一个用户会破坏结果,因为他们的名字以带有外语字符的字母开头,即 Á。

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

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

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

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

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

响应内容必须是实现的字符串或对象 __toString((,给出"布尔值"。

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

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

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

问题是,即使我将字符更改为常规 A,将来仍然可能有用户的名字中包含外国字符,我宁愿有一些东西来处理这个问题。

任何帮助,不胜感激。

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

in config/database.php :

'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_unicode_ci。 希望这有效。谢谢。

最新更新