2012-08-13 89 views
5

我做了一個簡單的PHP頁面來獲取POST數據並獲取一個sql查詢,然後打印結果。我正在使用mysql_fetch_array函數。mysql_fetch_array返回非Unicode文本

代碼的偉大工程,但響應是一個非Unicode文本,並將其返回是這樣的:

?????ABC????? 

注意數據庫整理是UTF8和存儲的數據都在phpMyAdmin正確顯示。我甚至使用這個META標籤在PHP頁面,但它的結果相同:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> 

任何想法?

+1

嘗試設置字符enconding進行連接。根據PHP「 – 2012-08-13 17:36:16

回答

12

創建的連接第一查詢之前添加幾行代碼:

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET utf8"); 
mysql_query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 

,也可以編輯你的MySQL配置中使用utf8默認。在這裏檢查你需要做什麼。

Change MySQL default character set to UTF-8 in my.cnf?

UPDATE

功能mysql_query已過時,所以mysqli對象可用於像這樣:

$mysqli = new mysqli("localhost", "MYSQL_USER", "MYSQL_PASS", "MYSQL_DB"); 

$mysqli->query("SET NAMES 'utf8'"); 
$mysqli->query("SET CHARACTER SET utf8"); 
$mysqli->query("SET SESSION collation_connection = 'utf8_unicode_ci'"); 
+0

thnx老兄!真棒! – 2012-08-13 18:09:50

+0

不客氣:) – Farahmand 2012-08-13 18:13:14

+1

注意:函數'mysql_query'已棄用。 – ganji 2016-01-20 14:36:34

2
mysql_set_charset('utf8', $link); 

其中$鏈接是的mysql_connect

+0

」此擴展在PHP 5.5.0以前不推薦使用,並且將在未來刪除...此功能的替代方法包括: mysqli_set_charset()「。 http://php.net/manual/en/function.mysql-set-charset.php – 2014-12-05 12:38:20