我尝试返回json添加的属性,我在用户模型中使用以下方法获得但我一直在
"message": "Malformed UTF-8 characters, possibly incorrectly encoded",
"exception": "InvalidArgumentException",
"file": "/var/www/timetool/vendor/laravel/framework/src/Illuminate/Http/JsonResponse.php",
代码
/**
* @return string
*/
public function getAvatarImageAttribute($value)
{
if($this->hasMedia('avatar')) {
$image = $this->getMedia('avatar');
$img = \Intervention\Image\ImageManagerStatic::make($image[0]->getPath())->encode('data-url');
}
elseif (isset($this->blob->dokument)) {
$img = 'data:image/jpeg;base64,'. base64_encode($this->blob->document);
} else {
$img = '';
}
return $img;
}
在控制器中我有
return \Response::json($users, 200, array('Content-Type' => 'application/json;charset=utf8'), JSON_UNESCAPED_UNICODE);
答案 0 :(得分:1)
过去这个功能你文档的顶部
public static function convert_from_latin1_to_utf8_recursively($dat)
{
if (is_string($dat)) {
return utf8_encode($dat);
} elseif (is_array($dat)) {
$ret = [];
foreach ($dat as $i => $d) $ret[ $i ] = self::convert_from_latin1_to_utf8_recursively($d);
return $ret;
} elseif (is_object($dat)) {
foreach ($dat as $i => $d) $dat->$i = self::convert_from_latin1_to_utf8_recursively($d);
return $dat;
} else {
return $dat;
}
}
<块引用>
调用上面的函数来转换内容。它有一个参数,只是它需要 blob 图像的值(二进制)
$img = $this->convert_from_latin1_to_utf8_recursively($this->blob->document)
答案 1 :(得分:0)
我认为它与JSON有关,只需要UTF8字符,而你的blob可能有无效的字符。试试utf8_encode($ img)。 http://at2.php.net/manual/en/function.utf8-encode.php 在您的控制器中返回。 Laravel将为您构建适当的json响应。
答案 2 :(得分:0)
在我的情况下,问题是控制器的编码。解决方案是将其转换为UTF8,并修复了该错误。