如果你的imagejpg
之类的函数能生成图片却不能在浏览器上输出图像,那么你继续看下去就可以解决了。
首先,我拿了以前一份可以正常输出的文件和有问题的文件作对比,我没发现有一个字符的差别。是的,一个都没有差别。
不死心,我去网上下载了一个校对软件。然后真相渐渐浮出了水面
正如你所见,左边是正常的,右边是有问题的。中文乱码了,然后我马上去查看了两个文件的编码格式。
- 正常 的 是
utf-8
格式, - 有问题的是
utf-8 + BOM
格式。
然后百度一下这两个格式的区别:
utf-8+BOM
比utf-8
多了三个字节前缀:0xEF0xBB0xBF
,有这三个字节前缀的文本或字符串,程序可以自动判断它为utf-8
格式,并按照utf-8
格式来解析文本或字符串,否则,一个文本或者字符串在未知编码的情况下,需要按照字符编码规范去一个个验证
多了三个字节,而PHP
的header
函数又要求在它之前浏览器不能有任何输出,所以导致了这个问题的产生。