UTF-8檔案編碼格式中有無簽名問題匯總《轉》

來源:互聯網
上載者:User

帶簽名即檔案頭含BOM資訊(三個位元組),不帶則沒有。 
帶了的好處是,只要支援多編碼的編輯器都能正確識別出檔案編碼。


軟在自己的UTF-8格式的文字檔之前加上了EF BB BF三個位元組,
windows上面的notepad等程式就是根據這三個位元組來確定一個文字檔是ASCII的還是UTF-8的, 然而這個只是微軟暗自作的標記,
其它平台上並沒有對UTF-8文字檔做個這樣的標記。

區分UTF-8檔案是否含有BOM方法:
1,用UltraEdit-32開啟檔案,切換到十六進位編輯模式,察看檔案頭部是否有EF BB BF;
2,用Dreamweaver開啟,察看頁面屬性,看“包括Unicode簽名BOM"前面是否有個勾;
3,用Windows的記事本開啟,選擇 “另存新檔",看檔案的預設編碼是UTF-8還是ANSI,如果是ANSI則不帶BOM。

去掉檔案中UTF-8格式BOM方法:
使用UlterEdit開啟, 切換到十六進位編輯模式,把最前面三個位元組(就是那該死的 EF BB BF)替換為20(空格ASCII碼值),儲存(注意關閉儲存時自動備份的功能),再切換到預設編輯模式,把最前面的三個空格去掉就可以了。

當帶簽名的UTF-8編碼內容被瀏覽器解析時,瀏覽器直接根據簽名即可判斷出使用UTF-8編碼來進行解析,當不帶簽名時,瀏覽器會根據內容的編碼來進行判別。簡而言之,帶簽名的將更容易被瀏覽器以正確的編碼方式進行解析。

最近開發的過程中碰到一個很鬱悶的問題,一個網站中即有.aspx頁面,也有.shtml頁面,它們都引用一個公用的標頭檔,例:<!--#include file="Html/header.htm"-->,這時問題來了。

1> .aspx、.shtml、header.htm頁面都採用utf-8帶簽名編碼,此時.aspx頁面正常,.shtml頁面頂部多出一片空白部分

2> .aspx、.shtml頁面採用utf-8帶簽名編碼,header.htm採用utf-8不帶簽名編碼,此時.shtml頁面正常,.aspx頁面出現亂碼

3> .aspx、.shtml、header.htm頁面採用utf-8不帶簽名編碼,web.config中設定網站編碼為utf-8(此項很重要,如果不配置,會出現亂碼),此時一切正常

說到這兒,也許大家認為按照第三種方式問題就解決了,其實不然,大家知道,VS的預設編碼是UTF-8帶簽名的,之所以採用這種編碼自然是有它的好處的,文章最開始已經對簽名與不簽名的區別進行描述了,顯而易見,帶簽名編碼是主流。


後總結:到底是什麼原因導致帶簽名的.shtml引用一個帶簽名的html標頭檔時會出現上面多出一段空白的現象,最後發現問題之所在,IIS中解
析.shtml的DLL為C:\WINDOWS\system32\inetsrv\ssinc.dll,而解析.aspx的DLL為C:
\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll,由於兩個DLL在解析
utf-8帶簽名編碼檔案時的差異,導致了上面問題的出現。

如果碰到上述問題怎麼解決呢?兩種解決方案,第一:弄兩個頭部引用檔案(編碼分別為utf-8及utf-8帶簽名),分別應用於.ASPX(utf-8帶簽名)及.SHTML(UTF-8);第二:將所有頁面均使用.aspx尾碼。

轉自:

http://www.cnblogs.com/Impulse/archive/2013/04/15/3022113.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.