在開發中使用php呼叫資料庫時,常常會遇到中文亂碼的問題。這個問題一般是由於資料庫字元集與php字元集不同或是php沒有正確解析資料庫中的中文字元造成的。在這篇文章中,將為大家介紹如何解決php中文亂碼的問題。
一、設定資料庫字元集
1.1 檢視資料庫字元集
在命令列介面輸入下列指令,查看資料庫目前字元集:
show variables like 'character%';
1.2 設定資料庫字元集
為了解決中文亂碼問題,需要將資料庫字元集設定為utf8。在mysql中,可以透過以下指令進行設定:
ALTER DATABASE `database_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
其中,database_name
是你要設定的資料庫名稱。這裡將資料庫的預設字元集設定為utf8。在mysql中,utf8是最常用的字元集,能夠支援絕大多數語言的字元。
1.3 設定資料表字元集
在mysql中,每個資料表也可以單獨設定字元集。透過下列指令可以將某個表格的字元集設定為utf8:
ALTER TABLE `table_name` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
其中,table_name
是你要設定的資料表名稱。這裡將資料表的字元集設定為utf8。這樣一來,資料庫中的所有表都會使用utf8字元集了。
二、設定php字元集
2.1 設定php預設字元集
開啟php.ini文件,然後找到"mbstring.language"參數,將它的值設為"CN "。如下所示:
mbstring.language=CN
2.2 設定php運行時字元集
在php中,也需要設定運行時字元集。可以透過以下程式碼設定php的字元集:
header('content-type:text/html;charset=utf-8');
這個程式碼會將php的輸出字元集設定為utf-8。
三、呼叫資料庫中的中文字元
3.1 資料庫連結字元集
在php中,需要透過連結資料庫時設定字元集,程式碼如下:
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('连接数据库失败!'); mysql_select_db($dbname, $conn); mysql_query("SET NAMES 'utf8'");
其中,$dbhost、$dbuser、$dbpass、$dbname分別是資料庫的主機位址、使用者、密碼、資料庫名稱。這裡我們透過mysql_query()函數將資料庫字元集設定為utf8。
3.2 設定查詢字符集
如果查詢中有中文字符,則需要設定查詢字符集。可以透過以下程式碼設定查詢字元集:
mysql_query("set character_set_client=utf8"); mysql_query("set character_set_results=utf8");
$result = mysql_query("SELECT * FROM table_name"); while($row = mysql_fetch_array($result)){ echo $row['field_name']; }
這樣就可以在頁面上正確顯示中文字元了。
五、總結
透過上述步驟,我們可以解決php顯示資料庫中的中文亂碼問題。要實現正確地顯示中文字符,需要將資料庫字符集和php字符集都設定為utf8,並正確地設定查詢字符集和連結字符集。這樣就可以在開發中使用中文字符,並實現正確地顯示。
以上是php顯示資料庫中的中文亂碼怎麼解決的詳細內容。更多資訊請關注PHP中文網其他相關文章!