輕松解決網站(zhàn)亂碼現(xiàn)象
日(rì)期:2013-05-03發布:首創網絡浏覽:797次
輕松解決網站(zhàn)亂碼現(xiàn)象。相(xε≤©iàng)信各位同行(xíng)或多(duō)或少π∑♥(shǎo)都(dōu)會(huì)碰到(dào)過亂碼的(≠π¶ de)問(wèn)題。從(cóng)來(lái)沒有∞≠≥π(yǒu)?相(xiàng)信我,隻是(shì)時(shí)候未到↓•φ(dào),在這(zhè)行(xíng)混,∑λ遲早會(huì)碰到(dào)的(de)。當δ→然,如(rú)果你(nǐ)對(duì)各類編碼非常了(le)解,對Ω∏(duì)浏覽器(qì)脾氣摸得(de)很(hěn)清楚了(le),你↑¶(nǐ)可(kě)以避開(kāi)或者快(kuài)速解決此類問(w¶×èn)題。希望這(zhè)篇文(wén)章(zhāng)對(duì)你₹≈(nǐ)有(yǒu)所幫助。 一(yī)
本文(wén)關鍵字:輕松,解決,網站(zhàn),亂碼,×≤現(xiàn)象,輕松,解決,網站(zhàn),
輕松解決網站(zhàn)亂碼現(xiàn)象★±€↓。相(xiàng)信各位同行(xíng)或多(duō)或少(shǎo)都(dō×≠u)會(huì)碰到(dào)過亂碼的(de)問(wèn)題。從(c≈§óng)來(lái)沒有(yǒu)?相(xiàng)信我,δ 隻是(shì)時(shí)候未到(dào),在這(zhè)行(xíng)混,★$≠遲早會(huì)碰到(dào)的(de)。當然,如(rú)果你(nǐ☆ε)對(duì)各類編碼非常了(le)解,對↓'$®(duì)浏覽器(qì)脾氣摸得(de)很(hěn)清楚了(le),你(♦↔¥♠nǐ)可(kě)以避開(kāi)或者快(kuài)速解決此類問(wèn)題。希∑δ望這(zhè)篇文(wén)章(zhāng)對(duì)你(nǐ)→↔ >有(yǒu)所幫助。
一(yī)、為(wèi)什(shén)麽會(huì)出現(x≥✔☆♠iàn)亂碼?
在計(jì)算(suàn)機(jī)中,₩✘☆我們儲存的(de)信息都(dōu)是(shì)用(₽₩"↔yòng)二進制(zhì)碼表示的(de)。我們文(≈₩wén)字和(hé)符号用(yòng)的(de)二進制(zhì)代碼的(de¥∑π)互相(xiàng)轉換,就(jiù)是≤<(shì)編碼,轉換需要(yào)一(yī)種¶ε ★規則,就(jiù)是(shì)字符集(charset),我們常用(yòng≤♣≥)的(de)字符集例如(rú):ascii♣,gb2312,unicode。
不(bù)同的(de)字符集所存儲的(de)內&★∏(nèi)容不(bù)同,比如(rú)&ldqu↑←o;太平洋”三個(gè)字采用(yòng)g₹∑§b2312對(duì)應的(de)值為(wèi)441138294983,ut₹★f-8對(duì)應為(wèi)E5A4A →σδAE5B9B3E6B48B,這(zhè)樣,當一(yī)個♦±δΩ(gè)gb2312的(de)文(wén)件(j←≥iàn)嵌入一(yī)個(gè)utf-8的(de)文(wén)件 ←±♦(jiàn)的(de)時(shí)候,問(wèn)題就(jiù)來•σ$(lái)了(le)。
二、ANSI,Unicode,UT♦₹αF-8,Encode,Charset,HTML實體(®<tǐ)…我快(kuài)瘋了(le)
瘋完了(le)沒,沒昏就(jiù)行(xíng)了(le),别±δ著(zhe)急,聽(tīng)我一(yī)一(y✘δ•≥ī)道(dào)來(lái)。其實這(zhè)隻是(shì)同一(yīש)樣東(dōng)西(xī)在不(bù)同場(chǎng)合的(de)應用(≠®•βyòng)。
A.ANSI,Unicode,UT&λ↑F-8
這(zhè)幾個(gè)歸為(wèi)一(yī)★✔類,它們是(shì)文(wén)件(jiàn)編碼。
ANSI指當地(dì)編碼,比如(rú)在大(dà)陸§♦•↔它指GB2312,在台灣它指GBK(Win中記事(shì)本保存文(w↓₽↓λén)件(jiàn)的(de)時(shí)候的(de)默認選項就(★★jiù)是(shì)它)。
Unicode是(shì)一(yī)個(gè)通(tōng)用(yòn©♠$ g)字符集,它是(shì)一(yī)個(gè)編碼标準,這(zhè)±♥∑₽個(gè)和(hé)GB2312是(shì)對(duì)應的↓(de),但(dàn)因為(wèi)字符集過大(dà),Un♠★←icode有(yǒu)它的(de)特殊性,在不(bù)同應用(yòng)₹"場(chǎng)合,有(yǒu)不(bù↔$ε)同的(de)具體(tǐ)實現(xiàn)手法,比如(rú)應用(y✘ >òng)于互聯網傳輸,采用(yòng)的(de)存儲與傳送格式是(sh γ±ì)UTF-8,Windows應用(yòng)α ₩™UTF-16,Linux應用(yòng)UTF-32。
B.Charset
HTML中的(de)Charset,C≠×♥SS中的(de)@charset,XML中的(de)encod>ε∑ing等,這(zhè)幾個(gè)歸為(wèi)£™一(yī)類。
它們是(shì)告訴浏覽器(qì)如(r✔↑₩ ú)何解碼。比如(rú)psd後綴是(shì)告訴系統這(zhè)是(sh€β≈αì)Photoshop源文(wén)件(jiàn),同樣charset設為®♥(wèi)gb2312是(shì)告訴浏覽器(qì)這(zhè)是(shì)♣≥一(yī)個(gè)簡體(tǐ)中文(wén)的(de)網頁。
C.Encode
Encode和(hé)encodeURI,e$✔&ncodeURIComponent歸為(♠≥""wèi)一(yī)類。
這(zhè)在下(xià)一(yī)節中進行(xín≤≈₩g)比較詳細的(de)介紹。當浏覽器(qì)提↕§交數(shù)據給服務器(qì)時(shí),特殊字符中文(wén)Ω≠♠一(yī)般浏覽器(qì)會(huì)自(zì)動編碼,但(dàn$♥₽)存在部分(fēn)保留字符,比如(rú)”#/&★∑rdquo;等,這(zhè)時(shí)候需要(yà≥ o)encode等進行(xíng)轉換。
D.HTML實體(tǐ)
當網頁中需要(yào)插入某些(xiē)特殊字符×↓時(shí),需要(yào)用(yòng)到(dγ××ào)HTML實體(tǐ),比如(rú)插入<,可(kě)以使用(yòng)<>
三、JavascriptURI編碼/解碼
A.為(wèi)什(shén)麽需要(yào¶∞)URI編碼?
通(tōng)常來(lái)說(shuō),之所以U"¥₽RI需要(yào)進行(xíng)編碼,是(shì)因為(wèi↓÷₩)URI中有(yǒu)些(xiē)字符可(kě)能(néng) •✔♣會(huì)引起歧義或者有(yǒu)隐私的(de)數(sδ∞& hù)據。
B.編碼與解碼的(de)函數(shù)?
JS對(duì)文(wén)字進行(xíng)編碼涉及3個(gè)函數Ω§(shù):escape,encodeURI,encodeURI<δComponent,相(xiàng)應3Ω¶個(gè)解碼函數(shù):unescape$δ→,decodeURI,decodeURIComponent
C.如(rú)何選擇?
首先,範圍不(bù)同。Escape不(bù)能(néng)編碼的♠ (de)字符有(yǒu):@*/+;encodeUφ✘ ₩RI:!@#$&*()=:/;?+&ls ®quo;;encodeURIComponent:!*()。
其次,編碼類型不(bù)同。encodeURI、eε±ncodeURIComponent采用(₹φyòng)utf-8進行(xíng)編碼;而Escape采用(yòng€βλ★)系統編碼。
所以,怎麽選擇?例如(rú)內(n <×$èi)容中要(yào)存在URI标識,則用(yòng)encodeURI,如(←•ε±rú)果想把”#,/”也(yě)要(yào)編♦™→碼用(yòng)escape或encod'>♥eURIComponent。
四、Ajax加載的(de)文(wén)件(jiàn)中不(bù)±¶能(néng)用(yòng)中文(wén)?
這(zhè)一(yī)直是(shì)讓開( >♦∏kāi)發人(rén)員(yuán)很(hěn)頭疼的✔ (de)問(wèn)題之一(yī),也(yě)是(shì)常見(j×₩•iàn)的(de)編碼問(wèn)題,原因很(hβ←ěn)簡單,你(nǐ)非得(de)拿(ná)羊城(chén✔α↔£g)通(tōng)往ATM上(shàng)插,結果當然是(shì)讀(d>δ×ú)不(bù)出來(lái)或者讀(dú)錯(cuò)。編碼問(wèn)題也(§φyě)是(shì)一(yī)樣,通(tōng)常出錯(cuò)的♠γ×(de)情況是(shì),文(wén)檔編碼是★ ₩₹(shì)GB2312,而浏覽器(qì)↓λ♠以UTF-8(Ajax默認解碼方式)來(lái)解碼,自(zφ↔ì)然亂碼。
怎麽解決呢(ne)?
1、文(wén)檔采用(yòng)UTF-↕¶♥8編碼,不(bù)會(huì)産生(shēng)任何問± ↔(wèn)題。
2、如(rú)果不(bù)能(néng)用(yòng)UT≤$≤F-8,XML文(wén)檔可(kě)以指定它的(de)✘→$Encoding,JS文(wén)件(jiàn)和 ♥ (hé)JSON數(shù)據目前沒有(yǒu)好(hǎo)的(de)解α•≠≠決辦法。
五、GB2312,UTF-8都(dōu)可(kě)> 以顯示中文(wén),如(rú)何選擇?
可(kě)以顯示中文(wén)的(de)編碼有(yǒu)•βε<GB2312、GBK、GB18030、Unicode。前三個(gè)保持向↑♦後兼容,比如(rú)“邯鄲網站(zhàn)建設”這(zhè)幾個(gè)字在這γ★(zhè)幾個(gè)編碼規則中內(nèi)碼是(s&™≤≈hì)一(yī)樣的(de)。它們的(de)不(bù)同之處ε™÷在于字符集不(bù)同,GB2312隻包括≠♦ ♣簡體(tǐ)中文(wén),GBK還(hái)包括繁§∑∑•體(tǐ),GB18030再加入了(le)•♠↔δ少(shǎo)數(shù)民(mín)族語言,比如(≥≤rú)藏文(wén)。那(nà)如(rú)¥ ÷>果顯示簡體(tǐ)中文(wén)可(kě)以任意選擇 ♦✘?據我目前測試了(le)解,應該都(dōu)是(shì)↕≤可(kě)以的(de),至于速度上(sh•¶àng)是(shì)否有(yǒu)差異,還(hái)未深究,但(dàn)GBαδε♠2312肯定更為(wèi)通(tōng)用(y∞Ωγòng),而且據我測試已經包含了(le)相(xiàng)☆∞當部分(fēn)繁體(tǐ)。至于Unicode,應用(yòng)在網頁中↓&≠的(de)UTF-8,中文(wén)一(yī)般需要(yà¥∏o)占據3個(gè)字節(前三種2個(gè)字節),所以當中文(≠₽↓∞wén)較多(duō)的(de)網頁用(yòn←δ£♣g)UTF-8文(wén)件(jiàn)将變得(de)更大(dαà)(我們公司大(dà)部分(fēn)網頁4%左右)。
六、UTF-8、UTF-16、UTF-32什(shén)麽區(q∑λ≈ū)别?
Unicode所做(zuò)的(de)是(shì)為(wèi)每個₹•α✘(gè)字符定義了(le)一(yī)個(gè)相(xiàn£•g)應的(de)數(shù)字表示。比如(rú),&ldq₽Ωuo;a“的(de)Unicod•e值是(shì)0×0061,&ldqπ≠uo;一(yī)”的(de)Unicde值是(shì)0&tδ•imes;4E00,這(zhè)是(shì)最簡單的(de)情αΩ<≈況,每個(gè)字符用(yòng)2個(gè↓↔)字節表示。Unicode定義了(le)百萬個(g÷♥™è)以上(shàng)的(de)字符,如(rú)果将所有(ε©yǒu)的(de)字符用(yòng)統一(yī)的(de)格式表示,需要(yàφ↓←$o)的(de)是(shì)4個(gè)字節。&ldq•φ¥uo;a“的(de)Unicode表示就(jiù)會(huì)變±≤成0×00000061,而“∑≤¶♥一(yī)“的(de)Unicod ÷e值是(shì)0×00004E00。實際上(shàng),這(λ €zhè)就(jiù)是(shì)UTF32,Linux操作♦λ(zuò)系統上(shàng)所使用(yòng)的>®≥α(de)Unicode方案。但(dàn)是(shì),仔細分(fēn)析可(k $β♦ě)以發現(xiàn),其實絕大(dà)部分(fēn)字符隻使用(yòng)↑¥✘≈2個(gè)字節就(jiù)可(kě)以表示了(le)。英文(wλ∞én)的(de)Unicode範圍是(shì)0×0↔≤000-0×007F,中文(wén)的(de)U♦≈nicode範圍是(shì)0×4E00-0×9F↓ →**,真正需要(yào)擴展到(dào)4個(gè)字節來(lái)♥×&表示的(de)字符少(shǎo)之又(yòu)少★γ(shǎo),所以有(yǒu)些(xiē)系統直接使用(yòng)2個(gèφ↓φ±)字節來(lái)表示Unicode。比如(rú)Windows系統上(shà✔♦γng),Unicode就(jiù)是(sh±<•βì)兩個(gè)字節的(de)。對(duì)于那(nà)些(xiē)需要(yà×σ↕o)4個(gè)字節才能(néng)表示的(de)字符,使用(yòn→±g)一(yī)種代理(lǐ)的(de)手法來(lái)擴展(®∑其實就(jiù)是(shì)在低(dī)兩個(gè)字節上×γ↓↕(shàng)做(zuò)一(yī)個(gè)标記,表示這(z"✔hè)是(shì)一(yī)個(gè)代理(lǐ),需要(↓≈≤yào)連接上(shàng)随後的(de)兩個(gè)字節,才能(néng♣)組成一(yī)個(gè)字符)。這(zhè)樣的€×(de)好(hǎo)處是(shì)大(dà)量的(de)節約了(le)存取空∑™(kōng)間(jiān),也(yě)提高(gāo)了(le)處&÷理(lǐ)的(de)速度。這(zhè)種Unico±¥₩de表示方法就(jiù)是(shì)UTF16。一(yī)般在Win≈™λdows平台上(shàng),提到(dào)Unicode,那(n¥↑à)就(jiù)是(shì)指UTF16了(leβ₹∑)。而UTF-8更有(yǒu)意思,它的(de)字節數(shù)1-4個(§∞gè)不(bù)等,如(rú)果純英文(wén)的(de)∞♥應用(yòng)環境,自(zì)然用(yòng)它更加節省。
七、CSS、JS的(de)編碼可(k ↓ ě)以和(hé)HTML不(bù)一(yī)緻嗎≈¥(ma)?
可(kě)以。但(dàn)最好(hǎo)在引用(yòng)時(s≠↓hí)手動設置Charset,值得(de)注意的(de)是(shì)IE、♦☆★FF默認根據當前頁面編碼,而Chrome默認↑★₹是(shì)UTF-8。
- 歡迎大(dà)家(jiā)閱讀(dú)浏覽,'φ部分(fēn)內(nèi)容來(lái)源于網絡♠¶,如(rú)有(yǒu)侵權,請(qǐng)聯系我們删除!
- 上(shàng)一(yī)條:IFRAME的(de)屬性實用(yòng)案例→₽
- 下(xià)一(yī)條:網站(zhàn)導航欄如(rú)何設計(jì)實現(>♣xiàn)合理(lǐ)化(huà)
服務項目
熱(rè)門(mén)信息
- 邯鄲網絡公司:模闆建站(zhàn)的(de)好(hǎo)≠¶↑Ω處有(yǒu)哪些(xiē)?
- 3642024-04-25

- 4.9日(rì)訊,企業(yè)網站(zhàn)建設如(rú)何發揮網∏♠絡營銷功能(néng)?
- 4092024-04-09

- 邯鄲網絡公司:網站(zhàn)建設開(kāi)發有(yǒu)哪些(x®↑βiē)細節需要(yào)注意?
- 5402024-03-07

- 邯鄲網絡公司:外(wài)貿網站(zhàn)制(zhì)作(≈δ≤zuò)的(de)8個(gè)步驟
- 3772024-03-05

- 簡單3步,輕松做(zuò)企業(yè)官網
- 6822024-02-18
