您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息

UTF8文件的签名问题及解决方法_PHP教程

2024/4/27 7:41:44发布6次查看
在我们保存utf8文本文件的时候,可以选择带签名,或者不带签名。也就是 有bom 格式编码,或者 无bom格式编码。如果看文件的内容,是看不出任何差别的,以下列文件(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签名,不然再次打开文件时,还是系统的默认编码而已。
http://www.bkjia.com/phpjc/364391.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/364391.htmltecharticle在我们保存utf8文本文件的时候,可以选择带签名,或者不带签名。也就是 有bom 格式编码,或者 无bom格式编码。如果看文件的内容,是看不...
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录