php輸出中文亂碼問題怎麼解決?

2020-11-06 18:00:41

解決方法:1、HTML和PHP混合的頁面,需用meta標籤或header()函數統一頁面編碼;2、純PHP的靜態頁面,使用header()函數將編碼設定為「utf-8」;3、使用mysql_query()來設定PHP連線mysql的編碼。

一般來說,亂碼的出現有2種原因,首先是由於編碼(charset)設定錯誤,導致瀏覽器以錯誤的編碼來解析,從而出現了滿屏亂七八糟的「天書」,其次是檔案被以錯誤的編碼開啟,然後儲存,比如一個文字檔案原先是GB2312編碼的,卻以UTF-8編碼開啟再儲存。要解決上述亂碼問題,首先需要知道開發中哪些環節涉及到了編碼:

1、檔案編碼:指的是頁面檔案(.html,.php等)本身是以何種編碼來儲存的。記事本和Dreamweaver在開啟頁面時候會自動識別檔案編碼因而不太會出問題。而ZendStudio卻不會自動識別編碼,它只會根據偏好設定的設定固定以某種編碼開啟檔案,如果工作時候一不注意,用錯誤編碼開啟檔案,做了修改之後一儲存,亂碼就出現了。

2、頁面申明編碼:在HTML程式碼HEAD裡面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />(這句一定要寫在<title>XXX</title>前面,否則會導致頁面一片空白(僅限IE+PHP))來告訴瀏覽器網頁採用了什麼編碼,目前中文網站開發中主要用的是GB2312和UTF-8兩種編碼。

3、資料庫連線編碼:指的是進行資料庫操作時候以哪種編碼與資料庫傳輸資料,這裡需要注意的是不要與資料庫本身的編碼混淆,比如MySQL內部預設是latin1編碼,也就是說Mysql是以latin1編碼來儲存資料,以其他編碼傳輸給Mysql的資料會被轉換成latin1編碼。

知道了WEB開發中哪些地方涉及到了編碼,也就知道了亂碼產生的原因:上述3項編碼設定不一致,由於各種編碼絕大部分是相容ASCII的,所以英文符號不會出現,中文就倒黴了。

php輸出中文亂碼的解決方法

第一種、HTML和PHP混合的頁面解決方案

方法一:使用<meta>標籤

如果是HTML中嵌入PHP程式碼,可以使用<meta charset="UTF-8">來解決中文亂碼問題

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>php輸出中文亂碼</title>
	</head>

	<body>
		<div class="demo">

			<?php
			echo "TW511.COM!";
			?>
		</div>

	</body>

</html>

方法二:使用header()函數

如何是HTML和PHP混編,除了按照第一個方法所說的操作之外,還需要在PHP檔案的最上面加入這句程式碼:

<?php
header("content-type:text/html;charset=utf-8");         //設定編碼
?>

第二種、純PHP頁面的中文亂碼問題(資料是靜態的)

如果你的PHP頁面出現了亂碼,只需要在頁面的開始處加入下面程式碼就可以了。

<?php
header("content-type:text/html;charset=utf-8");         //設定編碼
?>

第三種、PHP+Mysql中文亂碼問題

這個除了按照第三種所說的操作之外,還要在你的資料查詢/修改/增加之前加入資料庫編碼。而且,值得注意的是,這裡的UTF8和之前的不一樣,中間是沒有橫線的。

 <?php
    mysql_query('SET NAMES UTF8');
    //接下來的就是查出資料或者修改,增加
?>

如何你使用的MySQL版本在 4.1 或更高版本,可以在連結資料庫操作後,設定一個字元編碼,像下面這樣

0.jpg

注意:

在需要做資料庫操作的php程式前加的 mysql_query("set names '編碼'");編碼,一定要和php編碼一致,如果php編碼是gb2312那mysql編碼就是gb2312,如果是utf-8那mysql編碼就是 utf8,這樣插入或檢索資料時就不會出現亂碼了

更多程式設計相關知識,請存取:!!

以上就是php輸出中文亂碼問題怎麼解決?的詳細內容,更多請關注TW511.COM其它相關文章!