首頁 web前端 html教學 解讀HTML:命名空間與字元編碼

解讀HTML:命名空間與字元編碼

Dec 17, 2016 pm 02:10 PM

在做專案的過程中,我們經常會建立各種各樣的規範,以方便團隊之間更好的合作更好的完成專案;同樣我們也經常會聽到各種各樣的協議,例如Google的IM軟體Gtalk使用的開放的XMPP協議,只要其他IM軟體也遵循XMPP協議就能與Gtalk使用互通;而互聯網上的信息無以計數,這些信息本身是獨立存在的,如何將其串聯並呈現在用戶眼前,就需要使用到HTTP協定。

同樣的道理,因為瀏覽器們各自的核心不同,對於預設樣式的渲染也不盡相同,所以就需要一份各瀏覽器都遵循的規則來保證同一個網頁文檔在不同瀏覽器上呈現出來的樣式是一致的,這個規則就是DOCTYPE宣告。

因為網路是互通的,所以任意的兩個或以上的網頁文檔都可能會涉及到資料交換,而因為xml語言是允許使用者自訂標籤的,所以任意兩個交換的文檔就可能會出現相同的標籤,從而導致相同標籤的衝突,所以就需要一個命名空間以區分開交換文件中可能存在的相同標籤。

XHTML做為HTML轉向XML的一種語言,並不能實現XML語言中的使用者自訂標籤,所以XHMTL文件中的命名空間都是相同的:

xmlns即是XHTML namespace的縮寫,也就是所謂的「命名空間」。與DOCTYPE聲明一樣,xmlns也屬於一種聲明。與HTML文檔中仍然存在DOCTYPE宣告不一樣的是,在HTML文檔是不存在xmlns的,我們平常所見到的xmlns都是出現在XHTML文檔中的。

在製作一個網頁的時候,除了在開始的時候聲明DOCTYPE(文檔類型)之外,如果是XHTML文檔還需要聲明命名空間,而第三個需要聲明的就是網頁文檔的字符編碼類型:

為了能被瀏覽器正確的解釋以及通過W3C驗證,每個XHTML文件都應該聲明所使用的字元編碼。很多時候網頁文檔出現亂碼大部分都是因為字元編碼不對而造成的。

utf-8是unicode的一種變長度的編碼表達方式,做為一種全球通用型的字符編碼正越來越多的網頁文檔所使用,使用utf-8字符編碼的網頁可最大程度的避免不同區域的使用者造訪相同網頁時因字元編碼不同而導致的亂碼現象。

但是當我們打開國內的大多數網站看,特別是門戶型的大型網站,關於字符編碼的聲明卻並非是utf-8,而是gb2312:

當然,除了gb2312外還有一些網站使用gbk或是gb18030編碼,這三種字元編碼都是屬於簡體中文字符集。也就是說,如果一台電腦沒有安裝簡體中文字元集時,當它存取字元編碼為gb2312的中文網頁時,則顯示出來的是亂碼。

既然使用gb2312字元編碼時會因為不同區域的使用者存取而可能出現亂碼現象,那為何不使用utf-8呢?

其中一個原因可能歷史遺留的原因,而另一個更重要的原因應該是由於兩種編碼的存儲方式不同而造成的文檔體積不同。

使用gb2312字符編碼集時,一個漢字是佔用2個位元組的大小,而一個漢字在utf-8編碼中所佔的字節數卻往往都是在3個字節,甚至是3個以上的位元組。所以對於同一個中文文件來說,使用gb2312字元編碼來進行儲存的體積是要小於utf-8編碼所儲存的文檔大小的。

而對於文字多訪問量大的中文網站來說,使用gb2312編碼的網頁文檔在下載傳輸上可以節省下不小的流量,再者是因為中文網站的用戶群基本上都鎖定在中文用戶上,這些也就是很多網站使用gb2312編碼而不是utf-8編碼的原因。

但是文字多訪問量大的網站,國內並不多,再加上可能成對的亂碼問題,所以在製作網頁的時候推薦使用utf-8編碼。

當然,不管用何種編碼,最重要的是整站使用的編碼要統一。

對於字符編碼的聲明除了上面的方式,還可能看到另一種聲明方式:


這種聲明方式是針對老版本的瀏覽器的,在瀏覽器已經普遍更新換代的今天已經不建議使用這種聲明方式。

 以上就是解讀HTML:命名空間與字元編碼的內容,更多相關文章請關注PHP中文網(www.php.cn)!


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
如何解決tomcat日誌中的亂碼問題? 如何解決tomcat日誌中的亂碼問題? Dec 28, 2023 pm 01:50 PM

解決tomcat日誌亂碼問題的方法有哪些? Tomcat是一個流行的開源JavaServlet容器,廣泛用於支援JavaWeb應用程式的部署和運作。然而,有時候在使用Tomcat記錄日誌時會出現亂碼問題,這給開發人員帶來了許多困擾。本文將介紹幾種解決Tomcat日誌亂碼問題的方法。調整Tomcat的字元編碼設定Tomcat預設使用ISO-8859-1字元編

解決PHP報錯:未找到指定的命名空間類 解決PHP報錯:未找到指定的命名空間類 Aug 18, 2023 pm 11:28 PM

解決PHP報錯:未找到指定的命名空間類別在使用PHP進行開發時,我們經常會遇到各種各樣的報錯資訊。其中一個常見的報錯就是「未找到指定的命名空間類別」。這個錯誤通常是由於引入的類別檔案沒有被正確地命名空間引用所引起的。本文將介紹如何解決這個問題,並提供一些程式碼範例。首先,讓我們來看看一個常見的報錯訊息範例:Fatalerror:UncaughtError:C

Redis的命名空間與過期機制的設計想法與實作方式 Redis的命名空間與過期機制的設計想法與實作方式 May 11, 2023 am 10:40 AM

Redis是一個開源的高效能的鍵值儲存資料庫。在使用Redis進行資料儲存的時候,我們需要考慮到鍵的命名空間與過期機制的設計,來維護Redis的效能和資料完整性。本文將介紹Redis的命名空間和過期機制的設計想法和實作方式。一、Redis的命名空間設計思路在Redis中,鍵是可以任意設定的。為了方便管理和區分不同的資料類型,Redis引入了命名空間的概念。命

如何在F3框架中使用命名空間(Namespace)? 如何在F3框架中使用命名空間(Namespace)? Jun 03, 2023 am 08:02 AM

F3框架是一款簡單易用,靈活可擴充的PHPWeb框架,它的命名空間(Namespace)機制為我們提供了一個更規範、可讀性更強、程式碼結構更為清晰的程式設計方式。在這篇文章中,我們將探討如何在F3框架中使用命名空間。一、什麼是命名空間命名空間常被用來解決在PHP中命名衝突的問題,它可以將一個或多個類別、函數或常數封裝在一個命名空間中,相當於為它們加上一個前綴。例

有效的解決eclipse編輯器中亂碼問題的方法 有效的解決eclipse編輯器中亂碼問題的方法 Jan 04, 2024 pm 06:56 PM

解決eclipse亂碼問題的有效方法,需要具體程式碼範例近年來,隨著軟體開發的飛速發展,eclipse作為最受歡迎的整合開發環境之一,為眾多開發者提供了便利和高效。然而,使用eclipse時可能會遇到亂碼問題,這對於專案開發和程式碼閱讀帶來了困擾。本文將介紹一些解決eclipse亂碼問題的有效方法,並提供具體程式碼範例。修改eclipse檔案編碼設定:在eclip

如何處理Java開發中的字元編碼轉換異常 如何處理Java開發中的字元編碼轉換異常 Jul 01, 2023 pm 05:10 PM

如何處理Java開發中的字元編碼轉換異常在Java開發中,字元編碼轉換是一個常見的問題。當我們在處理檔案、網路傳輸、資料庫等操作時,不同的系統或平台可能會使用不同的字元編碼方式,導致字元的解析和轉換出現異常。本文將介紹一些常見的字元編碼轉換異常的原因和解決方案。一、字元編碼的基本概念字元編碼是用來將字元轉換為二進位資料的規則和方法,常見的字元編碼方式有AS

C++語法錯誤:使用了未定義的命名空間,怎麼處理? C++語法錯誤:使用了未定義的命名空間,怎麼處理? Aug 21, 2023 pm 09:49 PM

C++是一種廣泛使用的高階程式語言,它具有很高的靈活性和可擴展性,但同時也需要開發者嚴格掌握其語法規則才能避免錯誤。其中,常見的錯誤之一就是「使用了未定義的命名空間」。本文將介紹該錯誤的含義、出現原因和解決方法。一、什麼是使用了未定義的命名空間?在C++中,命名空間是一種組織可重複使用程式碼的方式,以便保持程式碼的模組性和可讀性。使用命名空間的方式可以使同名的函數

解決Go語言字元編碼問題的方法 解決Go語言字元編碼問題的方法 Jun 30, 2023 am 09:21 AM

解決Go語言開發中的字元編碼問題的方法在Go語言開發過程中,常會遇到字元編碼的問題。特別是在處理資料輸入、輸出、儲存和傳輸時,正確處理字元編碼是非常重要的。本文將介紹一些解決Go語言開發中字符編碼問題的方法。首先,在處理字元編碼問題之前,我們需要先了解Go語言的字元編碼標準。 Go語言使用的是Unicode字元編碼標準,這是一種全球通用的字元編碼標準,支援幾乎

See all articles