在寻找合适的答案后,我发现人们提供的解决方案不起作用,所以我在这里发帖,希望得到一些帮助。
我有一个用户数据库,它将按目录中的第一个字母列出。但是有一个用户会破坏结果,因为他们的名字以带有外来字符的字母开头,即Á。
我通过以下方式获得用户结果:
$users = $this->users->getAll($params);
然后使用json编码的集合返回响应:
return response()->collection($users);
但如果在结果中返回上述用户,则会出现以下错误:
Response内容必须是字符串或对象实现 __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,仍然会有未来的用户在其名称中包含外来字符,我宁愿有适当的东西来处理这个问题。
感谢任何帮助。
答案 0 :(得分:0)
utf8mb4_unicode_ci
对我来说很好。 答案 1 :(得分:0)
在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。 希望这有效。感谢。