我的类别表中有以下内容。有俄罗斯符号出现:
id name
1 Обувь
Обувь= Obuv
我希望在输出中将“Obuv”作为俄语符号。
echo Category::select('name')->first();
这个脚本应该给我“Обувь”作为输出,但我得到了
{ “名称”: “\ u041e \ u0431 \ u0443 \ u0432 \ u044c”}
怎么了?如何获得正确的输出?如果我在数据库中写“Obuv”,英语“Obuv”将在Laravel中给我正确的输出。在phpMyAdmin中,它给了我俄罗斯符号没有麻烦。问题出在Laravel。
答案 0 :(得分:1)
您正在通过回显在Laravel中默认以JSON输出的Category
模型来输出数据。默认情况下,这会在输出时自动转义多字节Unicode字符。当您运行json_encode()
时,您可以提供JSON_UNESCAPED_UNICODE
选项,如下所示:
$data = Category::select('name')->first();
echo json_encode($data, JSON_UNESCAPED_UNICODE);
但是,我应该清楚。您的Category
没有存储转义数据,当您输出到JSON时,只会转义 。如果您所做的只是确保通过echo
从数据库中获取正确的数据,那么您应该是明确的。
如果您只是寻找类别name
属性的原始文本,您应该能够输出如下:
echo $data->name;
有关详细信息,请参阅http://php.net/manual/en/function.json-encode.php和https://laracasts.com/discuss/channels/laravel/how-to-prevent-laravel-from-returning-escaped-json-data。