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 实例化类的一点摘记
Mar 23 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
PHP学习之整理字符串
Apr 17 PHP
php 生成自动创建文件夹并上传文件的示例代码
Mar 07 PHP
浅析PHP的静态成员函数效率更高的原因
Jun 13 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
php计划任务之ignore_user_abort函数实现方法
Jan 08 PHP
php rsa加密解密使用详解
Jan 14 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
Sep 01 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
Jul 15 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
如何把PHP转成EXE文件
2006/10/09 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
node.js中使用socket.io的方法
2014/12/15 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
基于jquery实现简单的手风琴特效
2015/11/24 Javascript
浅谈JavaScript中数组的增删改查
2016/06/20 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
Python面向对象之接口、抽象类与多态详解
2018/08/27 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
python多线程同步实例教程
2019/08/11 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python打包多类型文件的操作方法
2020/09/21 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
银行存款证明样本
2014/01/17 职场文书
求职信结尾怎么写
2014/05/26 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
详解python的内存分配机制
2021/05/10 Python
css3 文字断裂效果
2022/04/22 HTML / CSS