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 gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
PHP常用技巧总结(附函数代码)
Feb 04 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
php入门教程之Zend Studio设置与开发实例
Sep 09 PHP
PHP函数引用返回的实例详解
Sep 11 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
PHP设计模式之工厂模式实例总结
Sep 01 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
jquery二级导航内容均分的原理及实现
2013/08/13 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
javascript实现非常简单的小数取整功能示例
2017/06/13 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
vue数字类型过滤器的示例代码
2017/09/07 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
JavaScript实现简单轮播图效果
2018/12/01 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
RC4文件加密的python实现方法
2015/06/30 Python
使用python实现个性化词云的方法
2017/06/16 Python
python抓取网站的图片并下载到本地的方法
2018/05/22 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
python下载的库包存放路径
2020/07/27 Python
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
毕业生怎样写好自荐信
2013/11/11 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
公务员试用期满考核材料
2014/05/22 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
银行先进个人总结
2015/02/15 职场文书
体育教师教学随笔
2015/08/15 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
《日月潭》教学反思
2016/02/20 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技