首页 > 解决方案 > 带有重音的记录上带有“b”前缀的字符串

问题描述

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

dump($venda_item->produto->nomeproduto); // b"teste téste"

我的数据库设置为 utf8 和 utf8_general_ci 排序规则

Malformed UTF-8 characters, possibly incorrectly encoded当我在 json 中返回响应时,这会导致我出现以下错误,在这一行

$json_response = Response::json($response, $this->getStatusCode(), $headers);

更新

我发现如果我死了并在网络路由上转储记录它显示正常teste téste

Route::get('/', function () {
    dd(App\Vendasitem::where('codigovi', 112685)->first()->produto->nomeproduto);
}

否则,如果我在控制器或请求以及我尝试过的其他文件中执行相同操作,它会一直以“b”前缀返回我

更新 2

如果我像这样保存我的记录PROMO - VIRICAPS (GUARANá + POLIVIT) 60 CáPS - CAIXA 18 UNDdump($venda_item->produto->nomeproduto);它会返回带有重音符号的正确结果。

我所有的数据库,包括列都设置utf8mb4utf8mb4_unicode_ci

标签: phplaravelencoding

解决方案


如果您已经确认数据库上的编码。看看config/database.php, on charset 和 collat​​ion propeties。

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

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

{{utf8_encode($yourVar)}}

推荐阅读