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函数代码
Apr 22 PHP
破解图片防盗链的代码(asp/php)测试通过
Jul 02 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
PHP的5个安全措施小结
Jul 17 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
php将HTML表格每行每列转为数组实现采集表格数据的方法
Apr 03 PHP
前端必学之PHP语法基础
Jan 01 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
php日期操作技巧小结
Jun 25 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 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
Thinkphp多文件上传实现方法
2014/10/31 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
javascript自定义右键弹出菜单实现方法
2015/05/25 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vue自定v-model实现表单数据双向绑定问题
2018/09/03 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
python访问sqlserver示例
2014/02/10 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
python django事务transaction源码分析详解
2017/03/17 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
2018/01/10 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
Django restful framework生成API文档过程详解
2020/11/12 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
英文导游欢迎词
2014/01/11 职场文书
好邻里事迹材料
2014/01/16 职场文书
中秋寄语大全
2014/04/11 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
画展邀请函
2015/01/31 职场文书
大班上学期个人总结
2015/02/13 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Pillow图像处理库安装及使用
2022/04/12 Python