欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php UTF8 文件的簽名問題

 更新時(shí)間:2009年10月30日 21:54:26   作者:  
在我們保存UTF8文本文件的時(shí)候,可以選擇帶簽名,或者不帶簽名。
也就是 有BOM 格式編碼,或者 無(wú)BOM格式編碼。
如果看文件的內(nèi)容,是看不出任何差別的,以下列文件(schema.sqlite.sql)內(nèi)容為例:
schema.sqlite.sql
復(fù)制代碼 代碼如下:

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字節(jié),如果帶簽名,則文件大小為235字節(jié)。
UTF8簽名有3個(gè)字節(jié)(內(nèi)容為:EFBBBF),是專門用來(lái)告訴軟件:該文件是UTF8編碼的。
在一般情況下,有無(wú)簽名不會(huì)帶來(lái)問題,因?yàn)榫庉嬈骰蛘咂渌浖梢园凑瘴谋镜膬?nèi)容來(lái)推斷出是否是UTF8。
但有些時(shí)候還是會(huì)導(dǎo)致問題,比如上訴文件。該文件是sql語(yǔ)句文件,程序恰好要通過(guò)以下語(yǔ)句(php)來(lái)執(zhí)行該sql:
復(fù)制代碼 代碼如下:

$schemaSql = file_get_contents(dirname(__FILE__) . '/schema.sqlite.sql');
$dbAdapter->getConnection()->exec($schemaSql);

在這種情況下,帶有簽名的文件就會(huì)導(dǎo)致問題了,因?yàn)椤癠TF8簽名用的三個(gè)字節(jié)”其實(shí)是位于文件的最前面。所以導(dǎo)致了上面的語(yǔ)句無(wú)法成功運(yùn)行。
解決的辦法也很簡(jiǎn)單,去掉該文件UTF8簽名即可。
當(dāng)然,上面文件的內(nèi)容其實(shí)都是單字節(jié)的,是沒有必要保存為UTF8編碼的。

補(bǔ)充:全部是單字節(jié)內(nèi)容的文件除非加了UTF8簽名,不然再次打開文件時(shí),還是系統(tǒng)的默認(rèn)編碼而已。

相關(guān)文章

  • PHP stream_context_create()作用和用法分析

    PHP stream_context_create()作用和用法分析

    創(chuàng)建并返回一個(gè)文本數(shù)據(jù)流并應(yīng)用各種選項(xiàng),可用于fopen(),file_get_contents()等過(guò)程的超時(shí)設(shè)置、代理服務(wù)器、請(qǐng)求方式、頭信息設(shè)置的特殊過(guò)程。
    2011-03-03
  • php5.3不能連接mssql數(shù)據(jù)庫(kù)的解決方法

    php5.3不能連接mssql數(shù)據(jù)庫(kù)的解決方法

    這篇文章主要介紹了php5.3不能連接mssql數(shù)據(jù)庫(kù)的解決方法,針對(duì)php5.3之后不支持mssql_connect函數(shù)提供了對(duì)應(yīng)的解決方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12
  • curl實(shí)現(xiàn)站外采集的方法和技巧

    curl實(shí)現(xiàn)站外采集的方法和技巧

    curl是專門用來(lái)進(jìn)行網(wǎng)絡(luò)交互的庫(kù),提供了一堆自定義選項(xiàng),用來(lái)應(yīng)對(duì)不同的環(huán)境,穩(wěn)定性自然要大于file_get_contents
    2014-01-01
  • 解決微信授權(quán)回調(diào)頁(yè)面域名只能設(shè)置一個(gè)的問題

    解決微信授權(quán)回調(diào)頁(yè)面域名只能設(shè)置一個(gè)的問題

    在做項(xiàng)目集成微信登錄以及微信支付的時(shí)候,都需要進(jìn)行用戶授權(quán)。本文主要介紹了關(guān)于網(wǎng)頁(yè)授權(quán)回調(diào)域名的說(shuō)明以及解決微信授權(quán)回調(diào)頁(yè)面域名只能設(shè)置一個(gè)問題的方案。需要的朋友可以參考借鑒
    2016-12-12
  • 詳解PHP中的mb_detect_encoding函數(shù)使用方法

    詳解PHP中的mb_detect_encoding函數(shù)使用方法

    這篇文章主要介紹了詳解PHP中的mb_detect_encoding函數(shù)使用方法,包括對(duì)字符串編碼的轉(zhuǎn)換和判斷以及Call to undefined function mb_detect_encoding()錯(cuò)誤的解決,需要的朋友可以參考下
    2015-08-08
  • ThinkPHP中自定義目錄結(jié)構(gòu)的設(shè)置方法

    ThinkPHP中自定義目錄結(jié)構(gòu)的設(shè)置方法

    現(xiàn)在很多朋友喜歡使用ThinkPHP但它會(huì)生成的很多目錄有些朋友不喜歡,這里為大家分享下將目錄都放到include目錄的方法,這樣就干凈多了
    2014-08-08
  • PHP 簡(jiǎn)易輸出CSV表格文件的方法詳解

    PHP 簡(jiǎn)易輸出CSV表格文件的方法詳解

    本篇文章是對(duì)PHP 簡(jiǎn)易輸出CSV表格文件的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php5中類的學(xué)習(xí)

    php5中類的學(xué)習(xí)

    類的結(jié)構(gòu): 類的內(nèi)部能可能有三種東西,就是常量(constant),屬性(property)和方法(method),功能可以理解成類外部的常量,變量和函數(shù)。
    2008-03-03
  • WordPress中郵件的一些修改和自定義技巧

    WordPress中郵件的一些修改和自定義技巧

    這篇文章主要介紹了WordPress中郵件的一些修改和自定義技巧,包括更改郵件為HTML形式以及定義SMTP郵件的發(fā)件人的方法,需要的朋友可以參考下
    2015-12-12
  • PHP Google的translate API代碼

    PHP Google的translate API代碼

    這里我還是接上話使用Google的translate工具翻譯 .NET translate API的一篇文字,上篇是c#實(shí)現(xiàn)的,我這里再用PHP實(shí)現(xiàn)一下。
    2008-12-12

最新評(píng)論