UTF-8 是一種在web應用中經常使用的一種 Unicode 字符的編碼方式,使用 UTF-8 的好處在于它是一種變長的編碼方式,對于 ANSII 碼編碼長度為1個字節,這樣的話在傳輸大量 ASCII 字符集的網頁時,可以大量節約網絡 " /> 免费成年人在线观看视频,秋霞成人午夜鲁丝一区二区三区,日韩欧美一级

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php UTF-8、Unicode和BOM問題

一、介紹

UTF-8 是一種在web應用中經常使用的一種 Unicode 字符的編碼方式,使用 UTF-8 的好處在于它是一種變長的編碼方式,對于 ANSII 碼編碼長度為1個字節,這樣的話在傳輸大量 ASCII 字符集的網頁時,可以大量節約網絡帶寬。
UTF-8簽名(UTF-8 signature)也叫做BOM(Byte Order Mark),是UTF編碼方案里用于標識編碼的標準標記。BOM,是UTF編碼方案里用于標識編碼的標準標記,在UTF-16里本來是FF FE,變成UTF-8就成了EF BB BF。這個標記是可選的,因為UTF8字節沒有順序,所以它可以被用來檢測一個字節流是否是UTF-8編碼的。微軟做這種檢測,但有些軟件不做這種檢測,而把它當作正常字符處理。微軟在自己的UTF-8格式的文本文件之前加上了EF BB BF三個字節, windows上面的notepad等程序就是根據這三個字節來確定一個文本文件是ASCII的還是UTF-8的, 然而這個只是微軟暗自作的標記, 其它平臺上并沒有對UTF-8文本文件做個這樣的標記。也就是說一個UTF-8文件可能有BOM,也可能沒有BOM。
只有一個BOM,是不會有問題的。如果多個文件設置了簽名,在二進制流中就會包含多個UTF-8簽名,也就是導致XML轉換失敗的"root element must be well-formed"原因。

二、查看和轉換

既然一個UTF-8文件可能有BOM,也可能沒有,那該如何區分呢?
只要用帶十六進制編輯方式的軟件,例如,用UltraEdit-32打開文件,切換到十六進制編輯模式,察看文件頭部是否有EF BB BF。有,則為帶BOM方式。
Windows自帶的notepad記事本,保存為UTF-8時,默認就帶BOM。
轉換的方法有很多,常見的UltraEdit-32或NotePad++都可以,以UltraEdit-32為例。打開文件后,選擇“另存為”,在“格式”一欄中有如下選擇:



另外,DreamWeaver CS3也有類似的選項,在“首選項”中,如果選擇 Unicode (UTF-8) 作為默認編碼,則可以選擇“包括 Unicode 簽名 (BOM)”選項,以在文檔中包括字節順序標記 (BOM)。否則,不帶BOM:

三、其他知識
從http://blog.csdn.NET/thimin/archive/2007/08/03/1724393.ASPx 一文了解到:
所謂的unicode保存的文件實際上是utf-16,只不過恰好跟unicode的碼相同而已,但在概念上unicode與utf是兩回事,unicode是內存編碼表示方案,而utf是如何保存和傳輸unicode的方案。utf-16還分高位在前 (LE)和高位在后(BE)兩種。官方的utf編碼還有utf-32,也分LE和BE。非unicode官方的utf編碼還有utf-7,主要用于郵件傳輸。utf-8的單字節部分是和iso-8859-1兼容的,這主要是一些舊的系統和庫函數不能正確處理utf-16而被迫出來的,而且對英語字符來說,也節省保存的文件空間(以非英語字符浪費空間為代價)。在iso-8859-1的時候,utf8和iso-8859-1都是用一個字節表示的,當表示其它字符的時候,utf-8會使用兩個或三個字節。

一段關于BOM的更詳細說明,來自這里:
在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,所以不應該出現在實際傳輸中。UCS規范建議我們在傳輸字節流前,先傳輸字符"ZERO WIDTH NO-BREAK SPACE"。這樣如果接收者收到FEFF,就表明這個字節流是Big-Endian的;如果收到FFFE,就表明這個字節流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。
UTF-8不需要BOM來表明字節順序,但可以用BOM來表明編碼方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。所以如果接收者收到以EF BB BF開頭的字節流,就知道這是UTF-8編碼了。
Windows就是使用BOM來標記文本文件的編碼方式的。

php也不支持BOM。
php在設計時就沒有考慮BOM的問題,也就是說他不會忽略UTF-8編碼的文件開頭BOM的那三個字符。由于必須在<?或者<?php后面的代碼才會作為php代碼執行,所以這三個字符將會直接輸出。如果插件的文件有這個問題,將會導致在后臺頁面里激活或者不激活插件后顯示白屏,如果是模版文件有這個問題,將會導致這三個字符直接輸出,造成頁面上方有一個小空行。國外的英文插件和模版一般都是用的ASCII碼的編碼方式,不會有BOM,只有國內的插件和模版會由于作者的不知情造成問題。還有,大家修改模版的時候,由于輸出頁面使用UTF-8編碼,那么修改模版的時候如果有加入中文字符的話,必須把文件轉成UTF-8編碼才能正常顯示,這個時候如果所使用的編輯器自動加上了BOM的話,將會造成在頁面上輸出這三個字符,顯示效果就要看瀏覽器了,一般是一個空行或是一個亂碼。
※ 補充一句:特別是當使用php導入模板的時候,更容易因為這三個字符,導致瀏覽異常。

php技術php UTF-8、Unicode和BOM問題,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 免费女性裸身照无遮挡网站 | 色午夜日本高清视频www | 国产一卡2卡3卡4卡孕妇网站 | 成年人深夜福利 | 99精品观看 | 中文字幕在线免费观看视频 | 久久亚洲高清观看 | 成人毛片100部免费看 | 免费毛片视频网站 | 先锋影音av最新资源 | 丝袜美女被艹 | 中国少妇内射XXXX狠干 | 最新无码国产在线视频 | 亚洲电影网址 | 又紧又大又爽精品一区二区 | 精品国产在天天线在线麻豆 | 97国产成人精品视频 | 一个人看的WWW高清电影 | 国产婷婷午夜精品无码A片 国产婷婷色综合AV蜜臀AV | 国产高清美女一级a毛片久久w | 国产 有码 无码 电影 | 国产精品成人影院在线观看 | 色偷偷男人天堂 | 99在线免费| 国产亚洲国际精品福利 | 国产中文在线观看 | 手机在线亚洲日韩国产 | 久久久高清国产999尤物 | 中国老太太xxx| 国产成人无码免费精品果冻传媒 | 伊人久久大香线蕉综合高清 | 国产小视频免费在线观看 | 岛国大片在线播放高清 | 久久精品动漫网一区二区 | 涩涩999 | 国产极品美女视频福利 | 绿巨人www | 新新电影理论中文字幕 | 午夜在线观看免费完整直播网页 | 毛片在线全部免费观看 | 男女做爽爽爽视频免费软件 |