HTML文檔的文檔標記,也稱為HTML開始標記
這對標記分別位于網頁的最前端和最后端
<html>在最前端表示網頁的開始<html>在最后端表示網頁的結束HTML文件頭標記,也稱為HTML頭信息開始標記
用來包含文件的基本信息,比如網頁的標題、關鍵字,在<head>內容< <head></head>內可以放 <title></title>、 <meta></meta>、<style></style>等等標記。
注: <head></head>標記內的內容不會在瀏覽器中顯示
HTML文件標題標記
網頁的“主題”,顯示在瀏覽器的窗口的左上邊 注: 網頁的標題不能太長,要短小精悍,能具體反映頁面的內容,<title></title>標記中不能包含其他標記。
HTML文檔的主體標記
<body>…</body>是網頁的主體部分,在此標記之間可以包含如<p></p>、<h1></h1>、<br></br>等等標記。正是由這些內容組成了我們所常見的網頁
屬性 | 作用 | 設置 |
---|---|---|
bgcolor | 設置背景顏色 | <body bgcolor=”red”></body> |
text | 設置文本顏色 | <body text=”green”></body> |
link | 設置連接顏色 | <body link=”green”></body> |
vlink | 已經訪問了的鏈接顏色 | <body vlink=”green”></body> |
alink | 正在被點擊的鏈接顏色 | <body alink=”green”></body> |
頁面的元信息
提供有關頁面的元信息,比如針對搜索引擎和更新品讀的描述和關鍵詞
常用的name屬性
authorkeyWordsdescriptionothers把content屬性關聯到一個名稱。比如描述網頁的關鍵詞
<meta name=”keywords” content=”xiaoT”></meta>
注:
meta標記必須放在head元素里面content如果有多個值,用“,”隔開格式 | 特征 | 描述 |
---|---|---|
ANSII | 單字節,范圍0-127 | 可以描述所有的英文字母,阿拉伯數字,常用符號和控制符(回車,換行等) |
ANSII 擴展字符集 | 單字節,范圍128-255 | 包括了一些不常用的字符,比如畫表格時需要用下到的橫線、豎線、交叉等形狀。它是ANSII的擴展。 |
GB2312 | 雙字節,高位字節(第一個)范圍:0xA1 ~ 0xF7, 低位字節范圍:0xA1 ~ 0xFE | 對ANSII的中文擴展,兼容ANSII,不兼容ANSII擴展。主要用于表達漢字,可以表達7000多個漢字,常用漢字有6000,所以包含了常用漢字,多的字符將羅馬希臘的字母、日文的假名們都編進去了,連在 ASCII 里本來就有的數字、標點、字母都統統重新編了兩個字節長的編碼,稱為“全角”字符,ANSI原有的稱為“半角”。 |
GBK | 雙字節,高位字節范圍0x80~0xFF,低位字節0x00~0xFF | 對GBK2312的擴展,包含不常見漢字,兼容GB2312,所以也兼容ANSII。通常Windows中文版本默認的字符集是GBK。基本上包含了中華名族所有的漢字,如繁體,簡體,少數名族的文字等等。 |
Unicode | 雙字節,高位字節范圍0x00~0xFF,低位字節0x00~0xFF | 用于標識地球上所有名族語言,不兼容上面的編碼(ANSI,GB2312和GBK)。目的是將全世界所有的編碼統一。對于英文而言,浪費了一倍的空間。 |
UTF-8 | Unicode 向 UTF-8 轉換模版: [0000 - 007F] 0xxxxxxx [0080 - 07FF] 110xxxxx 10xxxxxx [0800 – FFFF] 1110xxxx 10xxxxxx 10xxxxxx | 用于將Unicode在網上傳輸,每次傳輸8個bit。全稱Unicode Transfer Format -8。左邊是unicode到utf8的轉換模版。任何unicode按照不同區間的模版,按順序填入自己的bit,就是對應的utf-8。例如”漢”字的Unicode編碼是6C49。6C49在0800-FFFF之間,所以要用3字節模板:1110xxxx 10xxxxxx 10xxxxxx。將6C49寫成二進制是:0110 1100 0100 1001,將這個比特流按三字節模板的分段方法分為0110 110001 001001,依次代替模板中的x,得到:1110-0110 10-110001 10-001001,即E6 B1 89,這就是其UTF8的編碼。UTF8表示英文時,不會浪費空間,并且兼容ANSI,所以英文網頁一般用UTF8編碼。但是UTF8表示中文時,會浪費空間(每個漢字可能需要3個字節),所以一般中文網站采用GBK編碼,節省帶寬資源。 |
網頁中出現中文亂碼十分常見,主要是由于html標簽中charset的設置與實際上的編碼不一致導致,如圖:
Charset告訴瀏覽器應該以什么格式解讀html中內容,所以如果charset中的編碼是utf-8,而html頁面中的內容出現了gbk文本,由于兩種格式不兼容,導致中文亂碼,由于UTF-8,兼容ANSI,所以英文內容正常顯示。從上面的表格,可以發現除了unicode不兼容ANSI,其他格式均兼容,所以很少遇見英文亂碼現象。
工作中,曾經遇見以下幾種亂碼現象,現在總結出來與大家分享:
數據源格式不同 html頁面展示的數據來自不同的數據源,不同的數據源的數據編碼格式不一樣,那么無論charset設置什么值,都會是亂碼。解決方法就是在展示數據之前,將所有的數據內容重新編碼為統一的格式,如utf-8,讓后設定charset=utf-8。
Html編碼與數據源不同 編輯html的格式與數據源格式不一致,比如html編輯器默認使用了ANSI(gbk),而數據源(如數據庫,xml,或第三方數據)是utf8,在編輯html時,為了不亂碼顯示,必然將charset設置為gbk或gb2312,所以當展示數據時,必然出現亂碼。解決方法還是統一編碼,如果數據源無法控制,可以將html設置為統一格式,如果html太多,那么需要借助批量編碼轉換工具。
CGI編碼與數據源不同 CGI(C++,php等)代碼的格式與數據源,charset不一致。動態網站html有可能是cgi生成的,在編寫cgi時有可能會hard code一些中文內容,如果編寫代碼的格式與charset,或數據源不一致,那么必然出現亂碼。
總結:確保html,CGI,數據源的編碼格式與charset一致,避免網頁中文亂碼。
參考資料:
1.網頁中文亂碼的那點事兒
|
新聞熱點
疑難解答