博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php文件代码采用UTF-8编码的BOM问题---转自CSDN---十方地藏---http://blog.csdn.net/webdesman...
阅读量:6870 次
发布时间:2019-06-26

本文共 1358 字,大约阅读时间需要 4 分钟。

一个项目,代码编码均为utf-8编码,发现问题:在使用session的时候报错,错误如下: -------------------------------------------------

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ......

-------------------------------------------------

那么表示在session前头有输出了,可是前面看起来没有什么输出,后经搜索发现原因如下:

用记事本编辑后,保存为utf-8编码的代码文件最前面会有BOM信息,而BOM信息是文件开头的一串隐藏的字符,用于让某些编辑器识别这是个UTF-8编码的文件。

 

PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符(十六进制下查看是以EF BB BF开头)。

 

所以当用记事本或DW(DW编码为utf8)打开该文件时,前面什么都没有,看不到。

 

但是实际上有BOM信息输出,而php的session前面不允许有输出,所以报错。

 

又测试:

Zend Studio v5.5.1(编码为utf-8)打开该文件,会看到有个芝麻点,删除它,session能正常获取了(但记事本再打开,选‘另存为’,会发现编码是ANSI了);

Zend Studio v5.5.1(编码为default)打开该文件,会看到有个“锘�1�7”,删除它,session也能正常获取了(同样的,记事本再打开,选‘另存为’,会发现编码是ANSI了);

 

 

 

【解决的办法】:

(1)如果只包含英文字符(或者说ASCII编码内的字符,即ANSI),就把文件存成ASCII码方式吧。用UE等编辑器的话,点文件->转换->UTF-8转ASCII,或者在另存为里选择ASCII编码。如果是DOS格式的行尾符,可以用记事本打开,点另存为,选ASCII编码。

 

(2)如果包含中文字符的话——————

A.直接用Zend Studio v5.5.1(编码为utf-8)打开该文件,删除前面的芝麻点,保存,OK。(我认为的最佳解决办法!)

B.可以用UltraEdit32的另存为功能,选择“UTF-8 无 BOM”即可。

值得注意的是:这个时候你再用记事本打开该文件,选择另存为,你会看到该文件的编码是“ANSI”!!!为什么?因为没有BOM信息了,记事本不认识它是UTF-8的了!(诡异的是:如果你的代码有中文注释,你用UltraEdit32的另存为功能,选择“UTF-8 无 BOM”,保存,再用记事本打开,选择另存为......你会发现该文件的编码是UTF-8了!!!)。这种情况没关系,跟多老外的程序源码的编码都是ANSI , 我建议使用UTF-8是考虑到通用性——非洲人民可用、亚洲人民可用、欧洲人民可用...全世界人民都可用。

 

原文链接:

转载于:https://www.cnblogs.com/bullz/archive/2012/04/27/2473157.html

你可能感兴趣的文章
「技术层面」剖析B2B供应链系统技术架构的部署方案 ...
查看>>
《淘宝网开店 拍摄 修图 设计 装修 实战150招》一一1.3 数码相机日常使用注意事项...
查看>>
《程序员之禅》一一10.10 淡泊宁静
查看>>
《MATLAB图像处理超级学习手册》一一2.1 矩阵的创建
查看>>
还在用密码登录 ECS?ECS 控制台更安全的 SSH 密钥对 来了
查看>>
哪种编程语言最流行?而这到底又意味着什么
查看>>
为什么企业不对 GPL 侵权采取法律行动
查看>>
《Spark大数据分析实战》——第1章Spark简介
查看>>
5.5确认范围
查看>>
Chris Grainger:我们如何才能更好地编程?
查看>>
以黑客教主之名,TK 发现 Windows 史上最大漏洞
查看>>
《IPv6精髓(第2版)》——导读
查看>>
《Windows Server 2012 Hyper-V虚拟化管理实践》一1.2 Hyper-V安装前后的变化
查看>>
Proxmox VE 4.4 发布,新 Ceph 仪表盘上线
查看>>
《CCNP TSHOOT(642-832)学习指南》一1.2 维护进程及维护流程
查看>>
华为宣布开源流处理平台查询语言 StreamCQL
查看>>
2016 年 6 月 RedMonk 编程语言排行榜
查看>>
《Adobe Photoshop CC经典教程(彩色版)》—第1课1.4节在Photoshop中还原操作
查看>>
HttpClient使用详解
查看>>
增强现实?先不要指望那些眼镜了
查看>>