中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP字符集編碼出現亂碼怎么解決

發布時間:2021-08-09 23:31:57 來源:億速云 閱讀:146 作者:chen 欄目:編程語言

這篇文章主要講解了“PHP字符集編碼出現亂碼怎么解決”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP字符集編碼出現亂碼怎么解決”吧!

要么頁面原始漢字和從數據庫里取出的漢字全是亂碼;要么原始漢字和數據庫漢字,一個顯示正常了,另一個就變成亂碼了。很煩很氣人! 問題需要一步一步的解決。在實際操作以下方法之前,需要配置 Web 服務器,使其與 PHP 集成,最終可以調試 PHP 程序。我們以常見的 GB2312 和 UTF-8 字符集為例來測試和說明。瀏覽器是 IE7.0。

頁面原始漢字亂碼的解決

PHP字符集編碼的原理我就不說了,網上搜索一下字符串“PHP 亂碼”,整框整框的文章供大家閱讀。我最關心的是具體怎么做,就可以解決這個實際問題。我最喜歡使用的文本編輯器是 UltraEdit,不僅僅因為它可以進行 16 進制編輯,還因為它支持多編碼文檔。解決這個問題就需要使用 UltraEdit 的這個功能。

打開中文 Windows,用 UltraEdit 創建一個文本文件,手工輸入一個 PHP 頁面文件,文件內容如下。保存為 test1.php 文件,注意保存時“格式”下拉框選擇“默認”- 特別注意這里。

< Html> < head> < title>頁面標題< /title> < META http-equiv=Content-Type content="text/html; charset=gb2312"> < /head> < Body> 電腦學習網:< br> < /body> < /html>

用 IE 瀏覽器打開網站的這一頁面。可以看到,頁面顯示正常。在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動選擇”),字符編碼是 GB2312。

[Firefox 2.0 下顯示正常。]

然后,在 UltraEdit 的“文件”菜單下,選“另存為”,格式選擇“UTF-8”,文件名為 test2.php。用 IE 瀏覽器打開這一頁面。可以看到,頁面顯示正常(其實英文字體已經有略微的變化了)。在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動選擇”),字符編碼是 UTF-8,自動變了!注意 一句并沒有修改,但是瀏覽器卻自動辨別出了真實的PHP字符集編碼!看來 IE 還是比較聰明的,也說明 IE 自動判別字符集是比 METE 標簽中 charset=xxx 的定義優先的。

[Firefox 2.0 下顯示出現亂碼。]

在該頁面首部加語句

<?php header("Content-Type:text/html;charset=utf-8");  ?>

再次保存該頁面文件,“格式”下拉框選擇“默認”,文件名為 test3.php。用 IE 打開網站里的該文件,這次看到,除過英文字母,漢字變成亂碼了!同時在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動選擇”),字符編碼是 UTF-8,已經被強制改變了。

出現漢字亂碼的原因,是因為原本的 GB2312 編碼,被強制以 UTF-8 的編碼形式顯示,所以亂碼出現了。這個時候在瀏覽器里人為指定 GB2312 編碼,頁面漢字又顯示正常了(真正制作頁面時是不能這么做的,非要讓瀏覽者自己選擇PHP字符集編碼,一個是瀏覽者可能根本不知道怎么選擇編碼、選什么編碼,再者也顯得我們太菜了!)。

[Firefox 2.0 下顯示出現亂碼。]

在該頁面首部加語句

< ?php  header("Content-Type:text/html;charset=GB2312");  ?>

再次保存該頁面文件,“格式”下拉框選擇“UTF-8”,文件名為 test4.php。用 IE 打開網站里的該文件,奇怪:看到頁面漢字顯示正常,并不是預想到的亂碼?!在 IE 瀏覽器的“查看”/“編碼”菜單下看到(勾選了“自動選擇”),PHP字符集編碼仍然是 UTF-8,并沒有被強制改變了 GB2312 字符集。

這個時候在瀏覽器里人為指定 GB2312 編碼,發現 IE 瀏覽器并不能人為指定編碼。看來 IE 瀏覽器對 UTF-8 字符集特別關照。無論是在 META 標簽指定,還是 PHP 語句指定,都不能讓 IE 瀏覽器顯示出漢字亂碼。

[Firefox 2.0 下顯示出現亂碼。]

小結一下: 以上測試主要在 IE7.0 下進行,Web 服務器為 Windows Server 2003 下的 IIS6.0,PHP 版本為 4.4.7。可以看到,IE7.0 為了正確識別字符集做了很多額外的自動處理的工作,以顯示其智能和友好。有時太殷勤了反而使我們不知所措。由于漢字亂碼問題與不同的瀏覽器及其不同的版本、Web 服務器、后臺腳本和不同的字符集都有點關系,所以問題顯得特別復雜。作為 Web 編程人員,主要關心與自己有關的因素就可以了,沒必要成為PHP字符集編碼的專家。為了兼容目前流行的 IE 和 FF 瀏覽器,我們可以按照以下簡單的方法處理我們的 PHP 代碼:

1,頁面的真正字符集與 META 標簽指定的應該一致;

2,也可以使用 header("Content-Type:text/html;charset=xxx"); 語句指定字符集,但是不能與字符的真正字符集沖突,也不能與 META 標簽沖突。(盡管根據測試結果表明,當 header() 和 META 沖突時,header() 比 META 指定的字符集更優先,因為根據 HttpWatch Basic 跟蹤顯示,header() 指定字符集后,IE 瀏覽器 Type 會明確的得到字符集指定。但是不能保證其它非主流瀏覽器也會這樣。)

3,PHP字符集編碼不能與數據庫取回的字符的字符集沖突,否則頁面會出現頁面本身的漢字和數據庫取回的漢字,全部亂碼或部分亂碼問題。

感謝各位的閱讀,以上就是“PHP字符集編碼出現亂碼怎么解決”的內容了,經過本文的學習后,相信大家對PHP字符集編碼出現亂碼怎么解決這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

扎鲁特旗| 巫溪县| 临澧县| 察隅县| 天镇县| 乌苏市| 宜都市| 奎屯市| 凤凰县| 全椒县| 华亭县| 遵义县| 藁城市| 衢州市| 灵石县| 调兵山市| 山东| 大同县| 呼玛县| 和顺县| 清水河县| 花莲县| 延边| 永善县| 海阳市| 武乡县| 丹凤县| 进贤县| 昂仁县| 寿光市| 泉州市| 大同县| 济阳县| 贡嘎县| 平湖市| 襄汾县| 江西省| 荣昌县| 长岛县| 织金县| 玉溪市|