php UTF8 文件的签名问题


Posted in PHP onOctober 30, 2009

也就是 有BOM 格式编码,或者 无BOM格式编码。
如果看文件的内容,是看不出任何差别的,以下列文件(schema.sqlite.sql)内容为例:
schema.sqlite.sql

CREATE TABLE guestbook ( 
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
email VARCHAR(32) NOT NULL DEFAULT 'noemail@test.com', 
comment TEXT NULL, 
created DATETIME NOT NULL 
); 
CREATE INDEX "id" ON "guestbook" ("id");

如果不带签名,则文件的大小为232字节,如果带签名,则文件大小为235字节。
UTF8签名有3个字节(内容为:EFBBBF),是专门用来告诉软件:该文件是UTF8编码的。
在一般情况下,有无签名不会带来问题,因为编辑器或者其他软件可以按照文本的内容来推断出是否是UTF8。
但有些时候还是会导致问题,比如上诉文件。该文件是sql语句文件,程序恰好要通过以下语句(php)来执行该sql:
$schemaSql = file_get_contents(dirname(__FILE__) . '/schema.sqlite.sql'); 
$dbAdapter->getConnection()->exec($schemaSql);

在这种情况下,带有签名的文件就会导致问题了,因为“UTF8签名用的三个字节”其实是位于文件的最前面。所以导致了上面的语句无法成功运行。
解决的办法也很简单,去掉该文件UTF8签名即可。
当然,上面文件的内容其实都是单字节的,是没有必要保存为UTF8编码的。

补充:全部是单字节内容的文件除非加了UTF8签名,不然再次打开文件时,还是系统的默认编码而已。

PHP 相关文章推荐
php读取数据库信息的几种方法
May 24 PHP
PHP新手入门学习方法
May 08 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
简单谈谈favicon
Jun 10 PHP
php实现图片上传并进行替换操作
Mar 15 PHP
php文件上传的两种实现方法
Apr 04 PHP
ThinkPHP3.2.3实现分页的方法详解
Jun 03 PHP
php操作access数据库的方法详解
Feb 22 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
CI框架网页缓存简单用法分析
Dec 26 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
HTTP头隐藏PHP版本号实现过程解析
Dec 09 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 #PHP
php 攻击方法之谈php+mysql注射语句构造
Oct 30 #PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 #PHP
浅谈PHP 闭包特性在实际应用中的问题
Oct 30 #PHP
php实现jQuery扩展函数
Oct 30 #PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 #PHP
PHP 批量删除数据的方法分析
Oct 30 #PHP
You might like
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
jquery默认校验规则整理
2014/03/24 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
JQuery基于FormData异步提交数据文件
2020/09/01 jQuery
在vue中嵌入外部网站的实现
2020/11/13 Javascript
用webAPI实现图片放大镜效果
2020/11/23 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
python类定义的讲解
2013/11/01 Python
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
python脚本内运行linux命令的方法
2015/07/02 Python
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
Python对象属性自动更新操作示例
2018/06/15 Python
python多进程读图提取特征存npy
2019/05/21 Python
学习Python爬虫的几点建议
2020/08/05 Python
逼真的HTML5树叶飘落动画
2016/03/01 HTML / CSS
小学生家长评语集锦
2014/01/30 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
保护动物的标语
2014/06/11 职场文书
求职教师自荐书
2014/06/19 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript