php - Base64 解码图像 PHP

标签 php encoding base64 decode encode

我正在尝试在 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/

相关文章:

javascript - 如何通过 Ajax 查询发送运算符 "&"?

php - 需要关于如何在 mysql 中保存 rpg 游戏的所有股票变化的建议

php - 如果满足特定条件,则使用正则表达式添加 CSS 条件

ruby - 如何在 Ruby 1.9 中读取 ANSI 文本文件并将字符串转换为 UTF-8?

python - 在这种情况下,python 中的 MySQLdb 模块是否返回 utf8 编码或 unicode?

java - 将 Base 64 字符串保存为图像文件

html - 如何将 Base64 编码的 PDF 数据 URI 嵌入到 HTML 5 `<object>` 数据属性中?

php - 分页不适用于帖子名称永久链接,但适用于普通永久链接

sql-server - 如何设置数据库默认编码?

javascript - 为什么 Javascript 中的 charCodeAt 的行为似乎与 PHP 的 chr 不同?我正在尝试实现 base64