Json “拉雷维尔”;格式错误的UTF-8字符,可能编码错误;,如何修复?

Json “拉雷维尔”;格式错误的UTF-8字符,可能编码错误;,如何修复?,json,attributes,blob,response,laravel-5.5,Json,Attributes,Blob,Response,Laravel 5.5,我尝试以json添加属性的形式返回,在我的用户模型中使用以下方法得到该属性,但我一直得到 "message": "Malformed UTF-8 characters, possibly incorrectly encoded", "exception": "InvalidArgumentException", "file": "/var/www/timetool/vendor/laravel/framework/src/Illuminate/Http/JsonResponse

我尝试以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);

我认为这与JSON有关,JSON只需要UTF8字符,而您的blob可能有无效字符。尝试utf8_编码($img)。
在您的控制器中,只需返回。Laravel将为您构建正确的json响应。

在我的例子中,问题是控制器的编码。解决方案是将其转换为UTF8,并修复了错误

超过此功能后,将显示在文档顶部

调用上面的函数来转换内容。它有一个参数,只需要blob image(二进制)的值


太棒了,这对我有用!
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;
   }
}
$img = $this->convert_from_latin1_to_utf8_recursively($this->blob->document)