網(wǎng)站內(nèi)中文出現(xiàn)亂碼的五個(gè)原因
來(lái)源:昆明網(wǎng)絡(luò)公司 日期:2010-09-26 閱讀: 發(fā)表評(píng)論
計(jì)算機(jī)是的西方國(guó)家發(fā)明的,理所當(dāng)然就使用了英語(yǔ)作為了計(jì)算機(jī)的母語(yǔ)言,但早期的時(shí)候給使用其他語(yǔ)言的國(guó)家造成了不少的障礙,尤其是東方國(guó)家,比如中國(guó),隨著計(jì)算機(jī)技術(shù)的發(fā)展,這個(gè)障礙慢慢的消失,但是在網(wǎng)站制作中還是會(huì)出現(xiàn)一些網(wǎng)站亂碼的問(wèn)題。
下面列出網(wǎng)頁(yè)出現(xiàn)亂碼的幾種原因和解決辦法:
1、網(wǎng)站頭部設(shè)定的編碼和網(wǎng)頁(yè)本身的編碼不一致導(dǎo)致的,html網(wǎng)頁(yè)頭部代碼:<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />是告訴瀏覽器該用什么編碼來(lái)讀取網(wǎng)頁(yè)的內(nèi)容,然后瀏覽器就會(huì)啟用相應(yīng)的解碼來(lái)程序內(nèi)容,同時(shí),網(wǎng)站本身還存在一個(gè)編碼的機(jī)制,中國(guó)人一般使用gbk、gb2312、utf-8編碼,如果網(wǎng)站制作者將網(wǎng)頁(yè)文件存儲(chǔ)為了gbk格式,然后在網(wǎng)頁(yè)頭部卻設(shè)置了utf-8的格式,那么瀏覽器在讀取網(wǎng)頁(yè)的時(shí)候就會(huì)將中文或其他非英文和數(shù)字的字符解析成亂碼;
如果是這種編碼錯(cuò)誤,解決辦法很簡(jiǎn)單,將解碼方式和文件存儲(chǔ)的編碼修改成一致即可,瀏覽者在遇到此類情況,可以在網(wǎng)頁(yè)空白處右鍵-編碼種選擇多種編碼方式試試,就可以看到亂碼的文字了。
2、不合理的字符串截取造成個(gè)別字符亂碼,在gbk和gb2312編碼下,中文是占用兩個(gè)字節(jié),而在utf-8編碼模式下,中文字符占用三個(gè)字節(jié),而英文和數(shù)字都是占用一個(gè)字節(jié),如果用英文的一些截取方式去截取中文字符的話,就可能出現(xiàn)將一個(gè)中文截?cái)嗟默F(xiàn)象,網(wǎng)頁(yè)就會(huì)出現(xiàn)中文亂碼,而gbk和utf-8的中文截取手段也不一樣。
這種情況的解決辦法就是規(guī)范截取字符串的函數(shù),因地制宜。
3、數(shù)據(jù)庫(kù)編碼問(wèn)題導(dǎo)致,這種情況在mysql中經(jīng)常出現(xiàn),因?yàn)閙ysql等一些數(shù)據(jù)庫(kù)支持存儲(chǔ)各種編碼的字符串,并且也有編碼的區(qū)分, 讀取數(shù)據(jù)庫(kù)的方式這個(gè)很關(guān)鍵,必須和網(wǎng)頁(yè)的頭部設(shè)定和存儲(chǔ)編碼一致,如果不一致就會(huì)出現(xiàn)亂碼。
4、AJAX傳遞中文編碼導(dǎo)致的,AJAX在傳遞中文數(shù)據(jù)的時(shí)候只支持UTF-8編碼的中文,所以如果嘗試用其他編碼方式傳遞的話就會(huì)出現(xiàn)亂碼,解決辦法是在傳遞中文數(shù)據(jù)前就將中文數(shù)據(jù)轉(zhuǎn)碼成utf-8。
5、網(wǎng)站本身中毒導(dǎo)致,這個(gè)情況的解決辦法就請(qǐng)參考“網(wǎng)站安全”設(shè)置這篇文章。
上面五種原因基本囊括了網(wǎng)站出現(xiàn)亂碼的可能性,在昆明網(wǎng)站建設(shè)過(guò)程中應(yīng)該盡量避免。
發(fā)表評(píng)論評(píng)論列表(有 條評(píng)論)