国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

造成網頁亂碼的根本性原因是什么

來源:懂視網 責編:小采 時間:2020-11-27 15:28:27
文檔

造成網頁亂碼的根本性原因是什么

造成網頁亂碼的根本性原因是什么:先看段代碼:<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>網頁編碼</title&g
推薦度:
導讀造成網頁亂碼的根本性原因是什么:先看段代碼:<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>網頁編碼</title&g
先看段代碼:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>網頁編碼</title>
</head>
<body>
</body>
</html>

HTML代碼中的<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 指定了網頁的編碼為utf-8。
網頁編碼涉及的知識點比較多,總的說來它也是一個歷史遺留問題。
第一臺計算機(ENIAC)于1946年2月誕生于美國,當時美國只考慮自己使用,并在計算機誕生后的幾年里制定了一套ASCII碼標準(American Standard Code for Information Interchange,美國信息交換標準代碼),它是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。
ASCII碼使用8位二進制數組合來表示256種可能的字符(2的8次方=256),包含了大小寫字母,數字0到9,標點符號,以及在美式英語中使用的特殊控制字符。一個字符占1個字節。ASCII碼表部分編碼如下:

HTML的轉義符(字符實體),比如符號“<”的轉義符為“<”或“<”,其中的數字編號“60”即是ASCII碼表的第60序號。類似的,大寫字母“K”也可以轉義為“K”。
我們使用轉義符做個試驗:

美國制定ASCII碼的意思是:ASCII碼可以滿足在計算機領域所有字符和表示上的需要。不過這只是美國自己的意思,畢竟所有的英文單詞都可以拆分來自26個英文字母,ASCII碼表能表達256個字符,確實足夠美國使用。
后來世界各地也都開始使用計算機,很多國家的語言文字并不是英文,這些國家的文字都沒被包含在ASCII碼表里。以我們中國為例,漢字近10萬個,根本無法排進ASCII碼表。于是我們國家對ASCII碼表進行拓展并形成自己的的一套標準,在標準中一個漢字占2個字節,新的碼表可以表達65536個漢字。但一開始并沒有將碼表全部填充使用完,只收錄了常用的6000多個漢字、英文及其它符號,這套標準稱為GB2312(信息交換用漢字編碼字符集,GB是“國家標準”的簡化詞“國標”的拼音首字母縮寫,2312是國標序號)。后來又制定了一套收錄更多漢字的標準(收錄的漢字有2萬多個),稱為GBK(漢字編碼擴展規范,K是“擴”的拼音首字母)。
在GB2312或GBK里,許多標點符號都使用2個字節進行了重新編碼,這類占2個字節的標點符號稱為“全角”字符(“全角”也稱“全形”或“全寬”或“全碼”),原來ASCII碼表中占1個字節的標點符號則稱為“半角”字符(“半角”也稱“半形”或“半寬”或“半碼”)。全角的逗號、括號、句號等與半角是不一樣的:

在中文輸入法下,默認的標點符號是全角字符;在英文輸入法下,標點符號則是半角字符。
我們接著講故事:隨著使用計算機的國家越來越多,各個國家制定自己的計算機編碼標準的情況也越來越多,導致的結果是:各國計算機的編碼互不支持、認識。比如在美國的計算機里要顯示漢字,則必須安裝漢字系統才可以,否則中文文件在美國系統的計算機中打開便是亂碼。
就這樣,在這個時期催生出了一個叫ISO的國際組織(International Organization for Standardization,國際標準化組織),著手解決各國的編碼問題。ISO統一制作了一個稱為UNICODE(統一碼、萬國碼、單一碼,Universal Multiple-Octet Coded Character Set,又簡稱為UCS)的編碼方案,用于收錄地球上所有文字和符號。UNICODE字符分為17組編排,每組編排稱為平面(Plane),每個平面擁有65536個碼位,共計可以收錄1114112個字符(111萬個字符,足夠大的容量)。UNICODE編碼統一一個字符占2個字節。
但UNICODE在很長一段時間內無法推廣,直到互聯網的出現,數據的傳輸與交換使各國之間的編碼進行統一化成為迫切的需要。但早期的硬盤和網絡流量都非常昂貴,UNICODE編碼里的每個字符卻占用了2個字節的容量,于是為了節省文件存儲時所占的硬盤空間,也為了節省字符在網絡傳輸過程中所占用的網絡流量,又制定了基于UNICODE、面向傳輸的眾多標準,這些面向傳輸的標準統稱為UTF(UCS Transfer Format)。UNICODE編碼與UTF編碼并不是直接的一一對應,而是要通過一些算法和規則來轉換。UNICODE與UTF的關系是:UNICODE是根本、基礎、目的,而UTF只是一種實現UNICODE的手段、方法、過程。
常見的UTF格式有:UTF-8,UTF-16,UTF-32。其中UTF-8是互聯網上使用最廣的一種UNICODE的實現方式,它專為傳輸而設計。正因為UTF-8是基于UNICODE而設計的傳輸實現方式,所以它能使編碼無國界,任意國家的文字都能在任意國家的電腦瀏覽器中里正常顯示。UTF-8最大的一個特點是:它是一種變長的編碼方式,它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度,當能夠使用1字節表示一個符號時,便使用1個字節來表示,如果需要2字節才能表示的符號,便使用2個字節來表示,類推,直到4個字節,從而節省硬盤存儲空間和網絡流量。
所以我們的網站在開發時如果使用GB2312或GBK編碼,當別的國家的電腦不支持漢字編碼,那么看到的將是亂碼,顯示出來類似這樣:口口口口口。而網站如果使用UTF-8編碼,則任意國家的電腦在打開網站時其內容會自動轉換成UNICODE編碼,并且由于現在的電腦都支持UNICODE編碼,從而能正常顯示任意文字!
但是國內很多的網站仍然使用GB2312或GBK編碼,這類網站通常只面對國內用戶提供服務,面對國內用戶不會有顯示上的問題。只是如果面對其他國家的瀏覽者,這類網站被打開時很大程度上將呈現亂碼。
為了網站的高兼容性與國際化,推薦網站使用UTF-8編碼,而不是使用GB2312或GBK編碼。
指定網頁為UTF-8、GB2312和GBK的標簽分別為:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Type" content="text/html; charset=gbk">

那么有一個問題出現了:網頁各種編碼的區別,僅僅是在于這一行meta標簽的設置差別嗎?僅僅是“utf-8”這5個字符換成“gb2312”這6個字符之類的這種“小差別”嗎?
不是的,差別不僅僅是這幾個字符的差別。當網頁指定meta標簽中的編碼為utf-8后,DreamWeaver在保存網頁時會自動將網頁文件保存為utf-8的編碼格式(二進制碼使用utf-8的編碼格式),meta標簽中的utf-8編碼是為了告訴瀏覽器:這個網頁用的是utf-8編碼,請在顯示時使用utf-8編碼的格式解析并呈現出來;而如果meta標簽中指定編碼為gb2312,DreamWeaver在保存網頁時會自動將網頁文件保存為gb2312的編碼格式(二進制碼使用gb2312的編碼格式),同樣,meta標簽中的gb2312編碼只是為了告訴瀏覽器:這個網頁用的是gb2312編碼,請在顯示時使用gb2312編碼的格式解析并呈現出來。我們做個試驗,將一個文本文件分別保存為utf-8格式(打開記事本新建文本文件,輸入內容后,選擇菜單:文件→另存為,編碼選擇為UTF-8)和gb2312格式(另存時編碼選擇為ANSI,ANSI代表當前操作系統的默認編碼,在簡體中文Windows操作系統中,ANSI 編碼代表 GBK 編碼;在繁體中文Windows操作系統中,ANSI編碼代表Big5;在日文Windows操作系統中,ANSI 編碼代表 Shift_JIS 編碼,類推),對比其二進制數據。這里使用UltraEdit-32文件編輯器對文本文件進行16進制查看,即使用16進制查看文件的二進制數據:

從上圖中可以看到,使用utf-8編碼和使用gb2312編碼保存的文件,其二進制數據是不一樣的,即這兩個文件的二進制數據內容是不一樣的。記事本軟件在打開文本文件時,會嘗試識別文件的編碼并進行解析和顯示,即文字保存在記事本里,無論保存成utf-8編碼還是gb2312編碼,通常情況下記事本都能正常識別和顯示,不需要在文件里額外記錄數據以告知記事本該文件是什么編碼。但很多軟件卻無法做到智能識別文本文件的編碼,這就要求文本文件在保存時,必須附帶一些特殊的內容(額外的數據)以告知該文件是什么編碼。UNICODE規范中有一個BOM(Byte Order Mark)的概念,就是字節序標記,在文件頭部開始位置寫入三個字節(EF BB BF)以告知該文件是utf-8編碼格式。但這個BOM又帶出了新的問題:不是所有的軟件或處理程序都支持BOM,即不是所有的軟件或處理程序都能識別文件開頭的(EF BB BF)這三個字節。當不支持識別時,這三個字節又會被當成文件的實際數據內容。早期的火狐不支持對BOM的識別,當遇到BOM時會對這三個字節顯示出特殊的亂碼符號;而到目前為止,PHP處理程序仍然不支持BOM,即當一個PHP文件保存為utf-8時,如果附帶了BOM,那么PHP處理程序會將BOM解析為PHP文件的實際數據內容而導致出錯!在DreamWeaver中,選擇軟件頭部菜單:修改→頁面屬性(也可以直接按快捷鍵ctrl+j),在彈出的頁面屬性面板中點選“標題/編碼”,即可看到可供選擇的編碼。通常在改變網頁的編碼時,使用這種方式改變。如下圖:

所以:當我們在meta標簽中設置為utf-8編碼格式時,網頁文件就必須要存儲為utf-8格式,這樣瀏覽器才能正常顯示網頁而不是顯示亂碼。如果在meta標簽中設置utf-8編碼格式,網頁文件卻保存為gbk或其它格式,那么在打開網頁時瀏覽器會接到網頁meta標簽中格式的通知:使用utf-8編碼格式來解析和顯示網頁,而網頁的二進制碼(數據內容)卻為gbk編碼或其它格式,顯示出來就會是亂碼!這好比相親時,紅娘手里的資料有誤,錯誤的告知男方:女方講英語(meta標簽中設置為utf-8編碼)。結果女方卻不懂英語(文件卻不是utf-8編碼)。男方開口一句“Hello”就讓女方不知所謂了(亂碼)。
我們來實驗一下,網頁指定meta標簽中的編碼為utf-8,文件卻保存為gbk格式:我們先用DreamWeaver編輯一個utf-8格式的網頁并保存,然后再用記事本打開該網頁,另存為,編碼選擇為ANSI。

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>中文</title>
</head>
<body>
本文件使用dreamweaver保存后,再使用記事本打開,并另存為ANSI編碼。
</body>
</html>

在瀏覽器中的執行結果如下:

綜上所述:網頁開發時,盡量使用utf-8編碼格式,并且在保存文件時,保存為utf-8編碼。(dreamweaver在保存網頁文件時,會根據<meta http-equiv="Content-Type" content="text/html; charset=編碼">所指定的編碼自動保存為正確的對應編碼,但如果使用其它網站代碼編輯器,比如記事本、Editplus等,就需要注意,在保存文件時要選擇為正確的編碼)。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

造成網頁亂碼的根本性原因是什么

造成網頁亂碼的根本性原因是什么:先看段代碼:<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>網頁編碼</title&g
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 精品国产系列 | 日韩在线欧美在线 | 欧美色图在线观看 | 国产精品亚洲四区在线观看 | 欧日韩视频 | 国产肉丝 | 一本色道久久88综合亚洲精品高清 | 欧美人一级淫片a免费播放 欧美精品专区免费观看 | xx日韩 | 国内精品一区二区三区最新 | 免费看全黄特黄毛片 | 免费毛片网| 另类一区二区 | 久久香蕉国产线看观看乱码 | 一区二区中文字幕 | 91久久综合九色综合欧美98 | 中文字幕在线不卡视频 | 国产一区二区三区不卡免费观看 | 中文字幕日韩精品有码视频 | 日韩在线视频精品 | 欧美一区二区日韩一区二区 | 亚洲欧美一区二区三区久久 | 国产成人不卡亚洲精品91 | 亚洲一区 中文字幕 久久 | 亚洲一区免费视频 | 国产精品大全国产精品 | 三区在线观看 | 欧美第二区 | 亚洲黄色一区二区 | 欧美人与禽x0x0牲伦交 | 2021精品国内一区视频自线 | 国产精选免费视频 | 一级毛片免费网站 | 黄色成人在线观看 | 97久久精品一区二区三区 | 在线播放一区二区三区 | 欧美精品色精品一区二区三区 | 99久久免费国产精精品 | 日韩在线免费视频 | 91情侣在线偷精品国产 | 午夜精品久久久久久毛片 |