2016-09-30 22 views
0

我現在正在學習HTML,與編碼相關的一個方面讓我感到困惑。想象一下,我打開我的測試編輯器,編寫一些HTML代碼並使用字符集A(例如UTF-8或ANSI或其他)進行保存。然後我認爲發生以下情況:HTML文檔中的<meta charset =「B」>`的含義

  1. 我已經輸入映射到特定號碼的所有字符,所述映射是由字符集指定;

  2. 數目被保存在所述計算機存儲器在其二進制表示爲秒和 Xi的序列。

在HTML文檔我剛纔保存有一行<meta charset="B">其中一個不同的另一個字符集。

當我試圖用瀏覽器打開HTML文檔時會發生什麼?它會按照字符集B映射到 s和的序列,它們是否包含錯誤的字符(而不是我寫文檔時的含義),從而顯示一些垃圾?

正如你所看到的這個問題,我試圖理解在HTML文檔中<meta charset="B">的真正含義。

回答

1

是的,你的理解正確。這正是mojibake誕生的原因;有些東西試圖用錯誤的字符集來解釋二進制序列,這會導致意外/錯誤的字符被顯示,或者文檔無法解碼整個文件,此時具體行爲取決於嘗試進行解碼的應用程序。

<meta charset>元素(並且實際上主要是Content-TypeHTTP標頭)是建議性的,通知客戶端(瀏覽器)它應該解釋文檔的字符集。否則客戶不知道。如果服務器/文檔建議使用錯誤的字符集,結果將會在某種程度上被破壞。

+0

讓我問一個後續問題。開始解碼我的HTML的瀏覽器首先需要解碼''行,但它不能這樣做,因爲它不知道使用什麼字符集,因爲它沒有讀取行' '還沒有。 –

+1

啊,趕上22.確實,這就是爲什麼'Content-Type'HTTP頭部覆蓋了''元素,並且應該是指定文檔編碼的主要首選方式。在缺少的情況下,瀏覽器使用各種技術;簡而言之,它就像1)檢查幾個字節來嘗試猜測編碼,2)解碼第一個千字節左右,看看你是否能夠找到一個''charset聲明,3)重新啓動並有更好的猜測。這就是爲什麼''元素應該是文檔中的第一件事。 – deceze

相關問題