我正在尝试在 PHP 中从 SQL 数据库(在 base64_encode 之后存储)中解码图像 blob。
我正在使用
header('Pragma: public');
header('Cache-control: max-age=0');
header('Content-Type: image');
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
echo gzencode( base64_decode ($result[0]['Icon']) ); // result is the result of query from DB
虽然当我的浏览器语言是英语时它有时可以工作,但如果我的浏览器语言不是英语,它就无法正确解码。
我正在使用 charles proxy 进行调试以查看响应。我无法在这里发布回复。英语响应的大小比其他响应少 3 个字节。
但对于其他语言,它会像这样带有额外的 3 个字节。
T�e�s�t�i�n�g� �
我检查了数据库中图像的编码字符串。在 DB 中是相同的,但在发送响应时有所不同。因此,如果语言是英语,则图像显示正确,但如果语言不是英语,则图像显示不正确。请帮助我。
最佳答案
我自己修复了这个问题。原因是 PHP 在开头添加了 UTF-8 字节顺序标记 (BOM)。因此,当使用 ob_clean() 清理输出缓冲区时,这个问题就得到了解决; 以下完美运行。
header('Pragma: public');
header('Cache-control: max-age=0');
header('Content-Type: image');
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
ob_clean();
echo gzencode( base64_decode ($result[0]['Icon']) ); // result is the result of query from DB
关于php - Base64 解码图像 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23347586/