Featured image of post imagejpg-imagepng-imagegif可以生成图片却无法输出图像到浏览器

imagejpg-imagepng-imagegif可以生成图片却无法输出图像到浏览器

utf-8+BOM 导致图片无法显示的问题

如果你的imagejpg之类的函数能生成图片却不能在浏览器上输出图像,那么你继续看下去就可以解决了。
首先,我拿了以前一份可以正常输出的文件和有问题的文件作对比,我没发现有一个字符的差别。是的,一个都没有差别。
不死心,我去网上下载了一个校对软件。然后真相渐渐浮出了水面


正如你所见,左边是正常的,右边是有问题的。中文乱码了,然后我马上去查看了两个文件的编码格式。

  1. 正常 的 是utf-8格式,
  2. 有问题的是utf-8 + BOM格式。
    然后百度一下这两个格式的区别:

utf-8+BOMutf-8多了三个字节前缀:0xEF0xBB0xBF,有这三个字节前缀的文本或字符串,程序可以自动判断它为utf-8格式,并按照utf-8格式来解析文本或字符串,否则,一个文本或者字符串在未知编码的情况下,需要按照字符编码规范去一个个验证
多了三个字节,而PHPheader函数又要求在它之前浏览器不能有任何输出,所以导致了这个问题的产生。