当我转储我的模型的属性并且它有一个重音时,它会以这个“b”前缀返回

dump($venda_item->produto->nomeproduto); // b"teste téste"
我的数据库设置为 utf8 和 utf8_general_ci 排序规则
当我在 json 中返回响应时,这会导致我出现以下错误 Malformed UTF-8 characters, possibly incorrectly encoded,在这一行
$json_response = Response::json($response, $this->getStatusCode(), $headers);
更新
我发现如果我死了并将记录转储到网络路由上,它会显示正常的 teste téste
Route::get('/', function () {
    dd(App\Vendasitem::where('codigovi', 112685)->first()->produto->nomeproduto);
}
否则,如果我在 Controller 或请求和我尝试的其他文件中做同样的事情,它会以“b”前缀返回给我
更新 2
如果我像这样保存我的记录 PROMO - VIRICAPS (GUARANá + POLIVIT) 60 CáPS - CAIXA 18 UNDdump($venda_item->produto->nomeproduto); 它会返回带重音的正确结果。
我所有的数据库,包括列都设置为 utf8mb4utf8mb4_unicode_ci

最佳答案

如果您已经确认了数据库上的编码。看看 config/database.php ,关于字符集和排序规则的特性。

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci'

如果问题出在“打印”上,那么您可以使用 utf8_encode 函数。

{{utf8_encode($yourVar)}}

关于php - 带有重音记录的带有 "b"前缀的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54675682/

10-13 08:49