一段与UTF8-BOM签名斗争的历史

large-logo
今天通过thinkPHP来生成验证码的时候,之前一直能够正常工作,可是后来也不知道怎么回事,验证码那部分的图片始终就不显示了,验证码那部分始终显示着一个裂了的图片,通过URL直接打开那个文件,却显示这样
1

下面是在查找资料的时候遇到的,希望能够有用。

“图像http://localhost/test.php因其本身有错无法显示”的解决

5

解决方案
header()之前不能有文本输出,但还是无法解决我的问题。

解决PHP生成校验码时“图像因其本身有错无法显示”的错误
转载,原链接:http://ddkangfu.blog.51cto.com/311989/608203
2

解决方案
3
但这种方式也还是无法解决我的问题。

终极解决方案

原因在于,自己还是不太了解UTF这种编码方式,因为UTF-8在utf家族中是最有优越感的,它同时拥有可以兼容ANSI,但是太可气的是UTF-8一般会带有一种叫做 BOM的签名,会隐藏在文件的开头,而今天我一开始之所以没有这种验证码的问题就是因为那时还没有BOM签名,所以是成功的,可以说PHP最讨厌有BOM的UTF-8,所以在之后的开发中
一定不要用记事本打开文件,因为记事本默认会有BOM签名
一定不要使用哪种带有BOM的签名的编辑器
在通过require和include包含文件时,包含的文件中一定不要有BOM签名
通过dreamweaver可以修改成无BOM的UTF-8格式,Ctrl+J -> 标题/编码 -> 不打勾,从新保存文件就OK。

呵呵,不要觉得dreamweaver很low噢,关键时刻还是能解决点问题的。

一段与UTF8-BOM签名斗争的历史
Tags:         

发表评论

电子邮件地址不会被公开。 必填项已用*标注