這篇文章主要講解了“PHP字符集編碼出現(xiàn)亂碼怎么解決”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP字符集編碼出現(xiàn)亂碼怎么解決”吧!
成都創(chuàng)新互聯(lián)公司是一家從事企業(yè)網(wǎng)站建設(shè)、做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)制作的專業(yè)網(wǎng)絡(luò)公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)數(shù)千家。
要么頁面原始漢字和從數(shù)據(jù)庫里取出的漢字全是亂碼;要么原始漢字和數(shù)據(jù)庫漢字,一個(gè)顯示正常了,另一個(gè)就變成亂碼了。很煩很氣人! 問題需要一步一步的解決。在實(shí)際操作以下方法之前,需要配置 Web 服務(wù)器,使其與 PHP 集成,最終可以調(diào)試 PHP 程序。我們以常見的 GB2312 和 UTF-8 字符集為例來測試和說明。瀏覽器是 IE7.0。
頁面原始漢字亂碼的解決
PHP字符集編碼的原理我就不說了,網(wǎng)上搜索一下字符串“PHP 亂碼”,整框整框的文章供大家閱讀。我最關(guān)心的是具體怎么做,就可以解決這個(gè)實(shí)際問題。我最喜歡使用的文本編輯器是 UltraEdit,不僅僅因?yàn)樗梢赃M(jìn)行 16 進(jìn)制編輯,還因?yàn)樗С侄嗑幋a文檔。解決這個(gè)問題就需要使用 UltraEdit 的這個(gè)功能。
打開中文 Windows,用 UltraEdit 創(chuàng)建一個(gè)文本文件,手工輸入一個(gè) PHP 頁面文件,文件內(nèi)容如下。保存為 test1.php 文件,注意保存時(shí)“格式”下拉框選擇“默認(rèn)”- 特別注意這里。
< Html> < head> < title>頁面標(biāo)題< /title> < META http-equiv=Content-Type content="text/html; charset=gb2312"> < /head> < Body> 電腦學(xué)習(xí)網(wǎng):< br> < /body> < /html>
用 IE 瀏覽器打開網(wǎng)站的這一頁面??梢钥吹?,頁面顯示正常。在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動(dòng)選擇”),字符編碼是 GB2312。
[Firefox 2.0 下顯示正常。]
然后,在 UltraEdit 的“文件”菜單下,選“另存為”,格式選擇“UTF-8”,文件名為 test2.php。用 IE 瀏覽器打開這一頁面??梢钥吹?,頁面顯示正常(其實(shí)英文字體已經(jīng)有略微的變化了)。在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動(dòng)選擇”),字符編碼是 UTF-8,自動(dòng)變了!注意 一句并沒有修改,但是瀏覽器卻自動(dòng)辨別出了真實(shí)的PHP字符集編碼!看來 IE 還是比較聰明的,也說明 IE 自動(dòng)判別字符集是比 METE 標(biāo)簽中 charset=xxx 的定義優(yōu)先的。
[Firefox 2.0 下顯示出現(xiàn)亂碼。]
在該頁面首部加語句
<?php header("Content-Type:text/html;charset=utf-8"); ?>
再次保存該頁面文件,“格式”下拉框選擇“默認(rèn)”,文件名為 test3.php。用 IE 打開網(wǎng)站里的該文件,這次看到,除過英文字母,漢字變成亂碼了!同時(shí)在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動(dòng)選擇”),字符編碼是 UTF-8,已經(jīng)被強(qiáng)制改變了。
出現(xiàn)漢字亂碼的原因,是因?yàn)樵镜?GB2312 編碼,被強(qiáng)制以 UTF-8 的編碼形式顯示,所以亂碼出現(xiàn)了。這個(gè)時(shí)候在瀏覽器里人為指定 GB2312 編碼,頁面漢字又顯示正常了(真正制作頁面時(shí)是不能這么做的,非要讓瀏覽者自己選擇PHP字符集編碼,一個(gè)是瀏覽者可能根本不知道怎么選擇編碼、選什么編碼,再者也顯得我們太菜了!)。
[Firefox 2.0 下顯示出現(xiàn)亂碼。]
在該頁面首部加語句
< ?php header("Content-Type:text/html;charset=GB2312"); ?>
再次保存該頁面文件,“格式”下拉框選擇“UTF-8”,文件名為 test4.php。用 IE 打開網(wǎng)站里的該文件,奇怪:看到頁面漢字顯示正常,并不是預(yù)想到的亂碼?!在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動(dòng)選擇”),PHP字符集編碼仍然是 UTF-8,并沒有被強(qiáng)制改變了 GB2312 字符集。
這個(gè)時(shí)候在瀏覽器里人為指定 GB2312 編碼,發(fā)現(xiàn) IE 瀏覽器并不能人為指定編碼??磥?IE 瀏覽器對(duì) UTF-8 字符集特別關(guān)照。無論是在 META 標(biāo)簽指定,還是 PHP 語句指定,都不能讓 IE 瀏覽器顯示出漢字亂碼。
[Firefox 2.0 下顯示出現(xiàn)亂碼。]
小結(jié)一下: 以上測試主要在 IE7.0 下進(jìn)行,Web 服務(wù)器為 Windows Server 2003 下的 IIS6.0,PHP 版本為 4.4.7??梢钥吹?,IE7.0 為了正確識(shí)別字符集做了很多額外的自動(dòng)處理的工作,以顯示其智能和友好。有時(shí)太殷勤了反而使我們不知所措。由于漢字亂碼問題與不同的瀏覽器及其不同的版本、Web 服務(wù)器、后臺(tái)腳本和不同的字符集都有點(diǎn)關(guān)系,所以問題顯得特別復(fù)雜。作為 Web 編程人員,主要關(guān)心與自己有關(guān)的因素就可以了,沒必要成為PHP字符集編碼的專家。為了兼容目前流行的 IE 和 FF 瀏覽器,我們可以按照以下簡單的方法處理我們的 PHP 代碼:
1,頁面的真正字符集與 META 標(biāo)簽指定的應(yīng)該一致;
2,也可以使用 header("Content-Type:text/html;charset=xxx"); 語句指定字符集,但是不能與字符的真正字符集沖突,也不能與 META 標(biāo)簽沖突。(盡管根據(jù)測試結(jié)果表明,當(dāng) header() 和 META 沖突時(shí),header() 比 META 指定的字符集更優(yōu)先,因?yàn)楦鶕?jù) HttpWatch Basic 跟蹤顯示,header() 指定字符集后,IE 瀏覽器 Type 會(huì)明確的得到字符集指定。但是不能保證其它非主流瀏覽器也會(huì)這樣。)
3,PHP字符集編碼不能與數(shù)據(jù)庫取回的字符的字符集沖突,否則頁面會(huì)出現(xiàn)頁面本身的漢字和數(shù)據(jù)庫取回的漢字,全部亂碼或部分亂碼問題。
感謝各位的閱讀,以上就是“PHP字符集編碼出現(xiàn)亂碼怎么解決”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)PHP字符集編碼出現(xiàn)亂碼怎么解決這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
文章標(biāo)題:PHP字符集編碼出現(xiàn)亂碼怎么解決
轉(zhuǎn)載來源:http://jinyejixie.com/article36/jjicpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、做網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)站導(dǎo)航、網(wǎng)站建設(shè)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)