• <acronym id="a68a6"></acronym>
    <s id="a68a6"><em id="a68a6"></em></s>
  • <input id="a68a6"><em id="a68a6"></em></input>
  • 做網(wǎng)站建設(shè)應(yīng)該選用哪種編碼,用utf-8還是用gb2312?

    2017/4/26 7:54:36??????點(diǎn)擊:

    做網(wǎng)站建設(shè)應(yīng)該選用哪種編碼,用utf-8還是用gb2312?

    經(jīng)常我們打開(kāi)外國(guó)網(wǎng)站的時(shí)候出現(xiàn)亂碼,又或者打開(kāi)很多非英語(yǔ)的外國(guó)網(wǎng)站的時(shí)候,顯示的都是口口口口口的字符,

      WordPress程序是用的UTF-8,很多cms用的是GB2312。

      ● 為什么有這么多編碼?

      ● UTF-8和GB2312有什么區(qū)別?

      ● 我們?cè)趪?guó)內(nèi)做網(wǎng)站是用UTF-8編碼格式還是GB2312編碼格式好? 

      一. 各種編碼的來(lái)歷

      可能很多同學(xué)一直對(duì)字符的各種編碼方式懵懵懂懂,根本搞不清為什么他們有這么多編碼。

      ANSI編碼

      其實(shí)在很久很久以前,有一群人,他們決定用8個(gè)可以開(kāi)合的晶體管來(lái)組合成不同的狀態(tài),以表示世界上的萬(wàn)物。他們看到8個(gè)開(kāi)關(guān)狀態(tài)是好的,于是他們把這稱為“字節(jié)”。

      開(kāi)始計(jì)算機(jī)只在美國(guó)用。八位的字節(jié)一共可以組合出256(2的8次方)種不同的狀態(tài)。 

      他們把其中的編號(hào)從0開(kāi)始的32種狀態(tài)分別規(guī)定了特殊的用途,一但終端、打印機(jī)遇上約定好的這些字節(jié)被傳過(guò)來(lái)時(shí),就要做一些約定的動(dòng)作。

      遇上00×10,終端就換行,遇上0×07, 終端就向人們嘟嘟叫,例好遇上0×1b, 打印機(jī)就打印反白的字,或者終端就用彩色顯示字母。他們看到這樣很好,于是就把這些0×20以下的字節(jié)狀態(tài)稱為"控制碼"。

      他們又把所有的空格、標(biāo)點(diǎn)符號(hào)、數(shù)字、大小寫(xiě)字母分別用連續(xù)的字節(jié)狀態(tài)表示,一直編到了第127號(hào),這樣計(jì)算機(jī)就可以用不同字節(jié)來(lái)存儲(chǔ)英語(yǔ)的文字了。大家看到這樣,都感覺(jué)很好,于是大家都把這個(gè)方案叫做 ANSI 的"Ascii"編碼(American Standard Code for Information Interchange,美國(guó)信息互換標(biāo)準(zhǔn)代碼)。當(dāng)時(shí)世界上所有的計(jì)算機(jī)都用同樣的ASCII方案來(lái)保存英文文字。

      擴(kuò)展ANSI編碼

      后來(lái),就像建造巴比倫塔一樣,世界各地的都開(kāi)始使用計(jì)算機(jī),但是很多國(guó)家用的不是英文,他們的字母里有許多是ASCII里沒(méi)有的,為了可以在計(jì)算機(jī)保存他們的文字,他們決定采用127號(hào)之后的空位來(lái)表示這些新的字母、符號(hào),還加入了很多畫(huà)表格時(shí)需要用下到的橫線、豎線、交叉等形狀,一直把序號(hào)編到了最后一個(gè)狀態(tài)255。從128到255這一頁(yè)的字符集被稱“擴(kuò)展字符集”。從此之后,貪婪的人類再?zèng)]有新的狀態(tài)可以用了,美國(guó)當(dāng)時(shí)估計(jì)也沒(méi)想到還有別的國(guó)家要用計(jì)算機(jī)的。

      GB2312編碼

      當(dāng)天朝人們得到計(jì)算機(jī)時(shí),已經(jīng)沒(méi)有可以利用的字節(jié)狀態(tài)來(lái)表示漢字,況且有6000多個(gè)常用漢字需要保存呢。天朝人民就不客氣地把那些127號(hào)之后的奇異符號(hào)們直接取消掉。

      規(guī)定:一個(gè)小于127的字符的意義與原來(lái)相同,但兩個(gè)大于127的字符連在一起時(shí),就表示一個(gè)漢字,前面的一個(gè)字節(jié)(他稱之為高字節(jié))從0xA1用到0xF7,后面一個(gè)字節(jié)(低字節(jié))從0xA1到0xFE,這樣我們就可以組合出大約7000多個(gè)簡(jiǎn)體漢字了。

      在這些編碼里,我們還把數(shù)學(xué)符號(hào)、羅馬希臘的字母、日文的假名們都編進(jìn)去了,連在 ASCII 里本來(lái)就有的數(shù)字、標(biāo)點(diǎn)、字母都統(tǒng)統(tǒng)重新編了兩個(gè)字節(jié)長(zhǎng)的編碼,這就是常說(shuō)的“全角”字符,而原來(lái)在127號(hào)以下的那些就叫"半角"字符了。于是就把這種漢字方案叫做 “GB2312”。GB2312 是對(duì) ASCII 的中文擴(kuò)展。

      GBK 和 GB18030編碼

      但是天朝的漢字太多了,我們很快就就發(fā)現(xiàn)有許多人的人名沒(méi)有辦法在這里打出來(lái),特別是某些天朝領(lǐng)導(dǎo)的名字要是打不出很麻煩的。于是我們不得不繼續(xù)把 GB2312 沒(méi)有用到的碼位找出來(lái)老實(shí)不客氣地用上。

      后來(lái)還是不夠用,于是干脆不再要求低字節(jié)一定是127號(hào)之后的內(nèi)碼,只要第一個(gè)字節(jié)是大于127就固定表示這是一個(gè)漢字的開(kāi)始,不管后面跟的是不是擴(kuò)展字符集里的內(nèi)容。結(jié)果擴(kuò)展之后的編碼方案被稱為 GBK 標(biāo)準(zhǔn),GBK 包括了 GB2312 的所有內(nèi)容,同時(shí)又增加了近20000個(gè)新的漢字(包括繁體字)和符號(hào)。

      后來(lái)少數(shù)民族也要用電腦了,于是我們?cè)贁U(kuò)展,又加了幾千個(gè)新的少數(shù)民族的字,GBK 擴(kuò)成了 GB18030。從此之后,天朝民族的文化就可以在計(jì)算機(jī)時(shí)代中傳承了。

      在這個(gè)標(biāo)準(zhǔn)里,最大的特點(diǎn)是兩字節(jié)長(zhǎng)的漢字字符和一字節(jié)長(zhǎng)的英文字符并存于同一套編碼方案里,因此他們寫(xiě)的程序?yàn)榱酥С种形奶幚恚仨氁⒁庾执锏拿恳粋€(gè)字節(jié)的值,如果這個(gè)值是大于127的,那么就認(rèn)為一個(gè)雙字節(jié)字符集里的字符出現(xiàn)了。

      那時(shí)候凡是受過(guò)編程學(xué)習(xí)的程序員都要每天念下面這個(gè)咒語(yǔ)數(shù)百遍的折磨:

      “一個(gè)漢字算兩個(gè)英文字符!一個(gè)漢字算兩個(gè)英文字符……”

      UNICODE編碼

      因?yàn)楫?dāng)時(shí)各個(gè)國(guó)家都像天朝這樣搞出一套自己的編碼標(biāo)準(zhǔn),結(jié)果互相之間誰(shuí)也不懂誰(shuí)的編碼,誰(shuí)也不支持別人的編碼,連大陸和臺(tái)灣這樣只相隔了150海里,使用著同一種語(yǔ)言的兄弟地區(qū),也分別采用了不同的編碼方案:

      當(dāng)時(shí)的天朝人想讓電腦顯示漢字,就必須裝上一個(gè)“漢字系統(tǒng)”。專門(mén)用來(lái)處理漢字的顯示、輸入的問(wèn)題。

      但是那個(gè)裝臺(tái)灣的人士寫(xiě)的程序就必須加裝另一套支持 BIG5 編碼的“倚天漢字系統(tǒng)”才可以用,裝錯(cuò)了字符系統(tǒng),顯示就會(huì)亂了套!這怎么辦?而且世界民族中還有那些暫時(shí)用不上電腦的窮苦人民,他們的文字又怎么辦?

      正在這時(shí),天使及時(shí)出現(xiàn)了——一個(gè)叫 ISO (國(guó)際標(biāo)誰(shuí)化組織)的國(guó)際組織決定著手解決這個(gè)問(wèn)題。他們采用的方法很簡(jiǎn)單:廢了所有的地區(qū)性編碼方案,重新搞一個(gè)包括了地球上所有文化、所有字母和符號(hào)的編碼!他們打算叫它 UCS, 俗稱 UNICODE 。( Universal Multiple-Octet Coded Character Set )

      在UNICODE 中,一個(gè)漢字算兩個(gè)英文字符的時(shí)代已經(jīng)快過(guò)去了。

      無(wú)論是半角的英文字母,還是全角的漢字,它們都是統(tǒng)一的“一個(gè)字符”!同時(shí),也都是統(tǒng)一的“兩個(gè)字節(jié)"”

      UTF-8和UTF-16

      UNICODE 來(lái)到時(shí),一起到來(lái)的還有計(jì)算機(jī)網(wǎng)絡(luò)的興起,UNICODE 如何在網(wǎng)絡(luò)上傳輸也是一個(gè)必須考慮的問(wèn)題,于是面向傳輸?shù)谋姸?UTF(UCS Transfer Format)標(biāo)準(zhǔn)出現(xiàn)了,顧名思義,UTF8就是每次8個(gè)位傳輸數(shù)據(jù),而UTF16就是每次16個(gè)位,只不過(guò)為了傳輸時(shí)的可靠性,從UNICODE到UTF時(shí)并不是直接的對(duì)應(yīng),而是要過(guò)一些算法和規(guī)則來(lái)轉(zhuǎn)換。

      未來(lái)的UCS-4

      如前所述,UNICODE 是用兩個(gè)字節(jié)來(lái)表示為一個(gè)字符,他總共可以組合出65535不同的字符,這大概已經(jīng)可以覆蓋世界上所有文化的符號(hào)。如果還不夠也沒(méi)有關(guān)系,ISO已經(jīng)準(zhǔn)備了UCS-4方案,說(shuō)簡(jiǎn)單了就是四個(gè)字節(jié)來(lái)表示一個(gè)字符,這樣我們就可以組合出21億個(gè)不同的字符出來(lái)(最高位有其他用途),這大概可以用到天朝成立銀河聯(lián)邦成立那一天吧!

      二. 為什么有些網(wǎng)站打開(kāi)有時(shí)候會(huì)是亂碼

      網(wǎng)頁(yè)亂碼是瀏覽器(如IE等)對(duì)HTML網(wǎng)頁(yè)解釋時(shí)形成的。

      如果在瀏覽網(wǎng)站網(wǎng)頁(yè)的代碼寫(xiě)錯(cuò)語(yǔ)系(比較少見(jiàn)),有形如:

    <HTML>

    <HEAD>

    <META CONTENT=“text/html;charset=ISO-8859-1”></HEAD>……

    </HTML>

      的語(yǔ)句,瀏覽器在顯示此頁(yè)時(shí),就會(huì)出現(xiàn)亂碼。因?yàn)闉g覽器會(huì)將此頁(yè)語(yǔ)種辨認(rèn)為“歐洲語(yǔ)系”。

      解決的辦法是將語(yǔ)種“ISO-8859-1”改為GB2312,如果是繁體網(wǎng)頁(yè)則改為BIG5。

      還有一種可能比較大,就是網(wǎng)頁(yè)并沒(méi)有標(biāo)明他用的是何種語(yǔ)系,即沒(méi)有

      <META CONTENT=“text/html;charset=XXXXX“>,這一行。

      而你的計(jì)算機(jī)默認(rèn)也不是這種語(yǔ)系,比方我們?cè)L問(wèn)某些日文網(wǎng)站,經(jīng)常出現(xiàn)這個(gè)問(wèn)題。這個(gè)主要是由于程序員是面向當(dāng)?shù)氐娜碎_(kāi)發(fā)的網(wǎng)站,由于當(dāng)?shù)囟际悄J(rèn)語(yǔ)系,所以沒(méi)有亂碼種情況,而你是外來(lái)人,你的操作系統(tǒng)本身默認(rèn)不是當(dāng)?shù)氐恼Z(yǔ)系。所以要手動(dòng)改語(yǔ)系。

      至于出現(xiàn)口口口口口口這種情況

      這是由于網(wǎng)站并沒(méi)有采用UTF-8編碼而是采用的當(dāng)?shù)氐木幋a,如蒙古語(yǔ)的,阿拉伯語(yǔ)的編碼,你的計(jì)算機(jī)中并沒(méi)有這種編碼,所以不能識(shí)別。

      解決辦法是,事先為瀏覽器安裝多語(yǔ)言支持包(例如在安裝IE時(shí)要安裝多語(yǔ)言支持包),這樣在瀏覽網(wǎng)頁(yè)出現(xiàn)亂碼時(shí),就可以在瀏覽器中選擇菜單欄下的“查看”/“編碼”/“自動(dòng)選擇”/蒙古),如為繁體中文則選擇“查看”/“編碼”/“自動(dòng)選擇”/阿拉伯語(yǔ),其它語(yǔ)言依此類推選擇相應(yīng)的語(yǔ)系,這樣可消除網(wǎng)頁(yè)亂碼現(xiàn)象。

      三. 目前開(kāi)發(fā)網(wǎng)站用什么編碼比較好

      我們一般通俗的理解為:

      UTF-8是世界性通用代碼,也完美的支持中文編碼,如果我們做的網(wǎng)站能讓國(guó)外用戶正常的訪問(wèn),就最好用UTF-8。

      GB2312屬于中文編碼,主要針對(duì)國(guó)內(nèi)用戶使用,如果國(guó)外用戶訪問(wèn)GB2312編碼的網(wǎng)站就會(huì)變亂碼。

      網(wǎng)友的反饋一般覺(jué)得是用UTF-8比GB2312要多很多,大家都比較贊同用UTF-8。

      從一張外國(guó)網(wǎng)站的調(diào)查也可看得出:

       由此圖可以看出,2001-2008年期間,GB2312編碼的使用情況雖然幅度不大,但還是在穩(wěn)定上升的;藍(lán)色的線表示出用UTF-8的網(wǎng)站越來(lái)越多了。

      我挑選了國(guó)內(nèi)部分幾個(gè)大的門(mén)戶網(wǎng)站,看看他們用的是哪種編碼格式:

      也許有同學(xué)就會(huì)問(wèn)了為什么國(guó)內(nèi)幾個(gè)網(wǎng)站用GB2312反而更多些呢。

      我也對(duì)這個(gè)疑問(wèn)進(jìn)行了思考,我覺(jué)得。應(yīng)該有3種原因:

      1. 國(guó)內(nèi)這些網(wǎng)站本身歷史也比較長(zhǎng),開(kāi)始使用的就是 GB2312編碼,現(xiàn)在改成 UTF-8(以前的網(wǎng)頁(yè))轉(zhuǎn)換的難度和風(fēng)險(xiǎn)太大。

      2. UTF-8編碼的文件比GB2312更占空間一些,雖然目前的硬件環(huán)境下可以忽略,但是這些門(mén)戶網(wǎng)站為了減少服務(wù)器負(fù)載基本上所有的頁(yè)面都生成了靜態(tài)頁(yè),UTF-8保存起來(lái)文件會(huì)比較大,對(duì)于門(mén)戶級(jí)別的網(wǎng)站每天生成的文件量還是非常巨大,帶來(lái)的存儲(chǔ)成本相應(yīng)提高。

      3. 由于UTF-8的編碼比GB2312解碼的網(wǎng)絡(luò)傳輸數(shù)據(jù)量要大,對(duì)于門(mén)戶級(jí)別的網(wǎng)站來(lái)說(shuō)。這個(gè)無(wú)形之間就要增大帶寬,用GB2312對(duì)網(wǎng)絡(luò)流量無(wú)疑是最好的優(yōu)化。

      所以在新做站的情況下,建議還是選擇UTF-8比較好。因?yàn)闆](méi)有上面那些原因,兼容為上策。

    男人香蕉好大好爽视频,日本中文字幕网站,91大神大战丝袜美女在线观看,亚洲国产精品高清在线一区
  • <acronym id="a68a6"></acronym>
    <s id="a68a6"><em id="a68a6"></em></s>
  • <input id="a68a6"><em id="a68a6"></em></input>
  • 主站蜘蛛池模板: 亚洲一级毛片免观看| 无码一区二区三区在线| 国产美女被爆羞羞视频| 亚洲综合无码一区二区三区 | 中文字幕在线高清| fc2ppv在线播放| 看成年女人免费午夜视频| 日韩第一页在线| 国产成人愉拍精品| 亚洲色成人www永久网站| a级日本片在线观看| 激情综合色五月六月婷婷| 新人本田岬847正在播放| 四虎影视成人精品| 久久精品无码一区二区三区不卡| a级毛片在线观看| 澳门永久av免费网站| 国产黄色app| 免费夜色污私人影院在线观看| 久久国内精品自在自线软件| 18未年禁止免费观看| 玩山村女娃的小屁股| 在线中文字幕网| 免费福利在线观看| 久久96国产精品| 黄色福利小视频| 日本不卡高字幕在线2019| 国产91久久久久久久免费| 久久精品国产99久久99久久久| 1024视频在线| 欧美激欧美啪啪片sm| 成年人网站黄色| 国产亚洲一区二区手机在线观看| 亚洲乱码一区二区三区在线观看| 99久久精品费精品国产一区二区| 精品午夜寂寞黄网站在线| 成年女人18级毛片毛片免费观看| 免费的黄色影片| 77777亚洲午夜久久多喷| 波多野吉衣AV无码| 国产真实迷j在线播放|