Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 图像blob格式错误的UTF-8字符,可能编码不正确_Php_Laravel_Encoding_Utf 8 - Fatal编程技术网

Php 图像blob格式错误的UTF-8字符,可能编码不正确

Php 图像blob格式错误的UTF-8字符,可能编码不正确,php,laravel,encoding,utf-8,Php,Laravel,Encoding,Utf 8,我正在尝试检索保存为blob的图像,但当我尝试使用Laravel 5.4将其作为JSON返回时,不断出现“格式错误的UTF-8字符,可能编码不正确”的错误。什么地方出了问题,我该如何解决 database.phpmysql配置 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', 检索图像 public function getpic() { $pic = DB::con

我正在尝试检索保存为blob的图像,但当我尝试使用Laravel 5.4将其作为JSON返回时,不断出现“格式错误的UTF-8字符,可能编码不正确”的错误。什么地方出了问题,我该如何解决

database.php
mysql配置

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix'    => '',
检索图像

public function getpic()
{
    $pic = DB::connection('mysql')
            ->table('itempictures')
            ->select('picture')
            ->get();

    return response()->json($pic);
}
该表的排序规则为拉丁文1\u瑞典文ci

列本身的排序规则
null

图像的打印

var\u图像转储

图像的
dd

如果您试图对二进制文件进行json解码,则应使用原始图像二进制数据进行响应,并使用某些图像类型修改响应内容标题,例如:

public function getImage($id)
{
    if($ehtufile = EhtuFile::find($id))
    {
        return response($ehtufile->filedata, 200)->header('Content-Type', 'image/jpeg');
    } else
    {
        // TODO: No image found:...
        $arRes = ['res' => 'Error', 'text' => 'Slide Show Image not found'];
        return "nope";
    }
}
我希望这会有帮助


David Lyons

你的问题是什么?我想知道什么是错的我认为你关于编码的假设是错的,编码是关于人类可读的文本,而不是关于二进制(大型)对象。我的意思是转码不应该发生在链中的任何地方。排序规则是关于用编码对文本排序,它也与blob无关。@Code4R7抱歉,我不懂。您是说数据没有问题吗?问题的原因不在您的数据库中。图像是没有编码的二进制数据,不能作为编码数据进行解析。当您尝试将其作为JSON(Unicode)返回时,似乎就是这样。也许您可以分享如何将图像数据放入JSON字符串中?