`
#rethink#
  • 浏览: 47456 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

UTF8文件的签名问题

阅读更多

在我们保存UTF8文本文件的时候,可以选择带签名,或者不带签名。

也就是 有BOM 格式编码,或者 无BOM格式编码。

如果看文件的内容,是看不出任何差别的,以下列文件(schema.sqlite.sql)内容为例: 

 

schema.sqlite.sql
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->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:

 

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->$schemaSql = file_get_contents(dirname(__FILE__. '/schema.sqlite.sql');

$dbAdapter->getConnection()->exec($schemaSql); 

 

在这种情况下,带有签名的文件就会导致问题了,因为“UTF8签名用的三个字节”其实是位于文件的最前面。所以导致了上面的语句无法成功运行。

解决的办法也很简单,去掉该文件UTF8签名即可。

当然,上面文件的内容其实都是单字节的,是没有必要保存为UTF8编码的。

 

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

分享到:
评论

相关推荐

    无头BOM的UTF8文件判断

    BOM是一个可选的Unicode签名,通常出现在文件的开头,用于标识文件采用的字符编码是UTF-8。然而,并非所有UTF-8文件都包含BOM,尤其是纯文本文件往往不带BOM,以避免在处理文件时引入额外的字节。 在IT领域,理解和...

    批量去utf8BOM签名头工具

    批量去utf8的BOM签名头工具最好用的批量去BOM签名头工具,快速方便地解决php文件的BOM问题。

    php UTF8 文件的签名问题

    在处理PHP中UTF-8编码的文件时,一个经常被忽视但非常重要的问题就是文件的签名(Byte Order Mark, BOM)问题。UTF-8编码的文本文件在保存时可以选择是否包含这种特殊的字节序列,即UTF-8签名。 首先,我们需要明确...

    visual studio 新建C++文件为 UTF8 文件解决方案

    请将 hfile.h newc++file.cpp 复制到 C:\Program Files (x86)\MicrosoftVisualStudio12.0\VC\vcprojectitems 我这里是vs2013,各种vs版本的路径可能...自己新建的话,可以用高级保存功能,另存为UTF-8(带签名)即可。

    utf-8批量bom添加删除(BomChecker)工具

    1.首先介绍一下本人应用场景,qt...3.此小工具主要针对utf-8编码文件,能够批量添加删除BOM,无识别转化ASIIC功能,添加BOM时,如果文件是utf-8(BOM),则跳过,删除亦然 4.当不选中添加删除时可用于文件数量统计。

    8 utf8-32转码

    UTF-8的优势在于它与大部分现有的ASCII兼容,因此在网络传输和文件存储方面非常流行。 2. UTF-32:这是一种固定长度的编码方式,每个Unicode字符都用4个字节表示。它的优点在于编码简单,因为每个字符都有一个固定...

    md5_utf8.asp

    总之,"md5_utf8.asp"这个文件在ASP环境下解决了对UTF-8编码的汉字进行MD5加密的问题,使得在ASP开发中可以更好地处理多语言和安全性需求。理解和应用这个文件的相关技术,对于提升Web应用的安全性和用户体验具有...

    php_web项目中utf-8的问题.do

    - 使用EditPlus并在“首选项”-“文件”-“UTF-8标识”中选择“总是删除签名”,然后保存文件。 4. **Web服务器UTF-8编码设置** 如果按照上述步骤操作后仍然存在中文乱码问题,则需检查Web服务器的配置。对于...

    支付宝asp集成_utf-8

    本文将详细阐述“支付宝asp集成_utf-8”这一主题,包括如何实现UTF-8编码下的支付宝接口集成,以及解决可能出现的乱码问题。 首先,我们要了解UTF-8编码的重要性。UTF-8是一种广泛使用的Unicode字符编码,能够表示...

    PHP生成UTF8文件的方法

    3. **UTF8签名(BOM)**: UTF8文件可以有可选的字节顺序标记(Byte Order Mark,简称BOM),即"\xEF\xBB\xBF"。这个特殊的序列告诉软件文件使用的是UTF8编码。在将转换后的字符串写入文件之前,将其添加到字符串的...

    Android-清除utf8bom的IntellijIDEA插件

    带BOM的UTF-8文件会在文件开头添加一个特殊字节序列(EF BB BF),用来标识文件是用UTF-8编码的,但在某些情况下,这个BOM可能会引起问题。 标题中的"Android-清除utf8bom的IntellijIDEA插件"指的是一款针对...

    炫彩签名插件 for Discuz!X1.5正式版/测试版 GBK简体 UTF8简体.rar

    安装此插件之后,会员就可以获得在签名中上传图片的机会。本插件是在炫彩签名图的基础上...如果您是UTF-8的用,请将signature包中discuz_plugin_signature_SC_UTF8.xml文件更名为discuz_plugin_signature.xml然后安装

    Oracle 配置UTF-8字符集 详述(原创)_解决各种影响乱码的场景

    原创作品 by Yang Sheng Jun, 传播请保留签名 Oracle 配置UTF-8字符集 详述(原创)_解决各种影响乱码...4. 导入文件并保证导入后的结果是utf-8 5. 客户端与数据库服务器字符集一致性保证 和检测 6. 导出数据库作为utf-8

    支付宝源码工程

    下载之后解压有【MD5签名版本和RSA签名版本】文件 MD5签名版本 |————create_direct_pay_by_user-CSHARP-GBK |————create_direct_pay_by_user-CSHARP-UTF-8 |————create_direct_pay_by_user-JAVA-GBK ...

    用dreamweaver将gb2312转utf8编码互相转换的图文教程

    虽然大多数现代浏览器都能正确处理带有或不带有BOM的UTF-8文件,但在某些情况下,BOM可能会导致问题,比如在某些文本编辑器中显示特殊字符。如果你不想在UTF-8文件中包含BOM,可以在保存文件时选择“无BOM”或“不带...

    支持UNICODE读写的MFC扩展类 CStdioFileEx

    这意味着当读取文件时,`CStdioFileEx`能够自动检测文件的字符集,无论是ASCII、UTF-8还是其他UNICODE编码,都能正确处理。这对于处理全球化软件和跨平台项目尤其重要,因为它确保了数据的一致性和准确性。 在`...

    Java乱码问题

    这一步是为了避免文件中存在BOM(Byte Order Mark)标记,因为某些程序在处理含有BOM的UTF-8文件时可能会出现问题。 - 完成设置后,保存文件并重新编译即可。 ##### 方法三:转换文件编码格式 3. **对于已存在的...

    支付宝及时到帐交易接口(utf-8)

    文件“net05_utf-8(aspx)”可能是一个.NET ASPX页面,用于处理与支付宝接口的交互逻辑,如接收和发送请求,处理返回的结果。 总的来说,支付宝即时到账交易接口的使用涉及一系列的交互流程和技术细节,包括安全机制...

    alipay.trade.page.pay-JAVA-UTF-8.zip

    本篇将围绕“alipay.trade.page.pay-JAVA-UTF-8.zip”这个压缩包文件,详细介绍如何在JAVA环境下集成并使用阿里支付的Page Pay服务,以及相关的Web开发技术。 1. **支付宝支付服务概述** 阿里支付提供了多种支付...

Global site tag (gtag.js) - Google Analytics