php中使用GD处理图片时,php文件为UTF-8编码时不能正常运行的问题
2013-05-03 09:35
836 查看
本来写了个给上传的图片添加文字水印的php方法,但是那时的php文件使用的ANSI编码
现在的项目使用的是UTF8的编码 于是就不能运行了
然后百度是个又烂又瘫。。。还是用google 问题出现在我是将以前的ANSI编码的php文件使用window自带的notepad转换成UTF-8的编码 而微软脑残自己会在前面加BOM标记
http://stackoverflow.com/questions/3170000/php-image-jpeg-dont-work-if-file-is-utf-8-works-if-its-ansi
然后php会把那个BOM标记作为字节一起输出 就会出问题了
Are you possibly saving the files as UTF8 BOM? That would likely screw up image output, since the BOM character is always output first. Try saving it as UTF8 No-BOM, that should be identical to ANSI files.
Notepad++ lets you convert/encode files to "utf8 without BOM"
Basically, there can't be any characters before your <?php tag. If you save as UTF8 with BOM, the BOM goes before
the <?php tag. Also watch out for MIME-type problems if you're serving an image file with a .php extension. I'd suggest adding a header() to send the image/jpeg MIME type
BOM标记:
UTF-8文件的Unicode签名BOM(Byte Order Mark)
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。
部分摘自:http://blog.csdn.net/thimin/article/details/1724393
同时Java也不支持UTF-8中的BOM标记
现在的项目使用的是UTF8的编码 于是就不能运行了
然后百度是个又烂又瘫。。。还是用google 问题出现在我是将以前的ANSI编码的php文件使用window自带的notepad转换成UTF-8的编码 而微软脑残自己会在前面加BOM标记
http://stackoverflow.com/questions/3170000/php-image-jpeg-dont-work-if-file-is-utf-8-works-if-its-ansi
然后php会把那个BOM标记作为字节一起输出 就会出问题了
Are you possibly saving the files as UTF8 BOM? That would likely screw up image output, since the BOM character is always output first. Try saving it as UTF8 No-BOM, that should be identical to ANSI files.
Notepad++ lets you convert/encode files to "utf8 without BOM"
Basically, there can't be any characters before your <?php tag. If you save as UTF8 with BOM, the BOM goes before
the <?php tag. Also watch out for MIME-type problems if you're serving an image file with a .php extension. I'd suggest adding a header() to send the image/jpeg MIME type
BOM标记:
UTF-8文件的Unicode签名BOM(Byte Order Mark)
BOM(Byte Order Mark),是UTF编码方案里用于标识编码的标准标记,在UTF-16里本来是FF FE,变成UTF-8就成了EF BB BF。这个标记是可选的,因为UTF8字节没有顺序,所以它可以被用来检测一个字节流是否是UTF-8编码的。微软做这种检测,但有些软件不做这种检测,而把它当作正常字符处理。
微软在自己的UTF-8格式的文本文件之前加上了EF BB BF三个字节, windows上面的notepad等程序就是根据这三个字节来确定一个文本文件是ASCII的还是UTF-8的, 然而这个只是微软暗自作的标记, 其它平台上并没有对UTF-8文本文件做个这样的标记。
部分摘自:http://blog.csdn.net/thimin/article/details/1724393
同时Java也不支持UTF-8中的BOM标记
相关文章推荐
- 十分棘手的问题,使用vs2005在文件系统机制下开发出来的web程序,配置到iis就不能正常运行?
- 在ashx一般处理程序文件中不能使用session和request的问题解决办法
- [置顶] 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- java使用gbk编码读取utf-8的js文件吃掉回车问题
- PHP 使用流方式下载文件与 UTF-8 的 BOM 问题
- 在ashx一般处理程序文件中不能使用session和request的问题解决办法
- 编码的问题--编码有三种(页面编码,文件格式的编码,后台处理所使用的编码)
- [原]几种流行php编辑器对utf-8编码 bom问题的处理比较
- processor.php文件消息回复功能开发不能使用全局变量$_W问题
- Python读取UTF-8编码文件并使用命令行执行时输出结果的问题
- Java应用程序打包成jar文件后,运行jar包后不能显示图片的问题
- 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- php如果一片空白,脚本没执行,可能是文件的编码问题,转化成UTF8就正常了
- php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman
- 使用 PHP 、 GD 、ImageMagic 、JS 等对图片进行滤镜处理资料收集
- nginx不能运行php文件的问题
- [PHP]GD库生成图像无法在浏览器正常显示的问题(更新:使用GD图像生成类发现错误必须及时清理缓存!)
- 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- PHP的GD组件动态生成的图片点右键为什么不能正常保存
- lamp使用php处理上传文件,调用move_uploaded_file函数遇到目录写权限问题及解决过程