新聞中心
Unicode簽名bom如何分析,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
Unicode簽名bom-什么是bom?
BOM 是 Byte Order Mark 的縮寫。是UTF編碼方案里用于標(biāo)識(shí)編碼的標(biāo)準(zhǔn)標(biāo)記,在UTF-16里本來是FF FE,變成UTF-8就成了EF BB BF。這個(gè)標(biāo)記是可選的,因?yàn)閁TF8字節(jié)沒有順序,所以它可以被用來檢測(cè)一個(gè)字節(jié)流是否是UTF-8編碼的。微軟做這種檢測(cè),但有些軟件不做這種檢測(cè),而把它當(dāng)作正常字符處理。
微軟在自己的UTF-8格式的文本文件之前加上了EF BB BF三個(gè)字節(jié),windows上面的notepad等程序就是根據(jù)這三個(gè)字節(jié)來確定一個(gè)文本文件是ASCII的還是UTF-8的,然而這個(gè)只是微軟暗自作的標(biāo)記,其它平臺(tái)上并沒有對(duì)UTF-8文本文件做個(gè)這樣的標(biāo)記。
Unicode簽名bom-查看utf-8的方法
也就是說一個(gè)UTF-8文件可能有BOM,也可能沒有BOM,那么怎么區(qū)分呢?
四種方法。
1,用UltraEdit-32打開文件,切換到十六進(jìn)制編輯模式,察看文件頭部是否有EF BB BF。
2,用Dreamweaver打開,察看頁(yè)面屬性,看“包括Unicode簽名BOM”前面是否有個(gè)勾。
3,用Windows的記事本打開,選擇“另存為”,看文件的默認(rèn)編碼是UTF-8還是ANSI,如果是ANSI則不帶BOM。
Unicode簽名bom
4:用emeditor打開,選擇“另存為”,看編碼下面的
添加 unicode 簽名(bom)(G)是否勾選。如圖:
Unicode簽名bom-在php中應(yīng)用時(shí)的問題和解決方案
注意用Convertz把gb2312文件轉(zhuǎn)換成UTF-8文件時(shí),默認(rèn)設(shè)置是不帶BOM的。不帶BOM可能出現(xiàn)上述亂碼問題,但是帶BOM,對(duì)于php的include文件要小心,會(huì)在php字節(jié)流前面多出EFBBBF,提前輸出到顯示器有可能會(huì)帶來程序錯(cuò)誤。一個(gè)解決方案是凡是被include的文件都保存為ANSI,主文件可以是UTF-8。要想把一個(gè)文件去掉BOM,使用UlterEdit打開,切換到十六進(jìn)制編輯模式,把最前面三個(gè)字節(jié)(就是那該死的EFBBBF)替換為20,保存(注意關(guān)閉保存時(shí)自動(dòng)備份的功能),再切換到默認(rèn)編輯模式,把最前面的三個(gè)空格去掉就可以了。
Unicode簽名bom-編碼小知識(shí)
另外還學(xué)到一些編碼的小知識(shí):所謂的unicode保存的文件實(shí)際上是utf-16,只不過恰好跟unicode的碼相同而已,但在概念上unicode與utf是兩回事,unicode是內(nèi)存編碼表示方案,而utf是如何保存和傳輸unicode的方案。utf-16還分高位在前(LE)和高位在后(BE)兩種。官方的utf編碼還有utf-32,也分LE和BE。非unicode官方的utf編碼還有utf-7,主要用于郵件傳輸。utf-8的單字節(jié)部分是和iso-8859-1兼容的,這主要是一些舊的系統(tǒng)和庫(kù)函數(shù)不能正確處理utf-16而被迫出來的,而且對(duì)英語字符來說,也節(jié)省保存的文件空間(以非英語字符浪費(fèi)空間為代價(jià))。在iso-8859-1的時(shí)候,utf8和iso-8859-1都是用一個(gè)字節(jié)表示的,當(dāng)表示其它字符的時(shí)候,utf-8會(huì)使用兩個(gè)或三個(gè)字節(jié)。
看完上述內(nèi)容,你們掌握Unicode簽名bom如何分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁(yè)題目:Unicode簽名bom如何分析-創(chuàng)新互聯(lián)
文章出自:http://www.dlmjj.cn/article/hsedh.html