2013-03-27 75 views
-2

我有一個數據庫與utf8_general_ci編碼,但是當我用PHP獲取數據到頁面它顯示「????」,有什麼問題?MySQL編碼utf8_general_ci

<?php 
$query1 = "SELECT name FROM `kotegorii`"; 
$result1 = mysql_query($query1) or die(mysql_error()); 
echo "<h3>Категориялар</h3>"; 
while ($row = mysql_fetch_array($result1)) { 

    echo $row['name']."<br>"; 
} 
?> 

的代碼使用的是UTF-8編碼也..

+0

數據存儲在utf8_general_ci中的字段也是如此,因爲您可以使用utf8數據庫,並且數據庫列可以不同! – llanato 2013-03-27 09:27:55

+1

推薦閱讀:[UTF-8通過所有方式](http://stackoverflow.com/questions/279170/utf-8-all-the-way-through) – 2013-03-27 09:28:16

+0

是的,所有表和所有行都是utf8_general_ci – Hurrem 2013-03-27 09:30:24

回答

0

應設置頁面編碼太寫入。

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 
    <body> 
    <!-- and so on --> 
+0

它已經如此 – Hurrem 2013-03-27 09:31:05

0

我不知道你的數據的外觀,但你對$row['name']試圖utf8_decodeutf8_encode

+0

它看起來像文字是西里爾文,所以'utf8_encode'不會解決問題 – Joni 2013-03-27 09:45:07

5

你必須連接到數據庫mysql_set_charset後立即設置MySQL連接編碼成UTF-8:

mysql_set_charset('utf8'); 

服務器使用的連接編碼將信息發送到客戶端,無論怎樣的文字在存儲器中被編碼。在許多安裝中,連接編碼默認爲latin1

此外,您不應該在新代碼中使用舊的mysql API;它已被棄用,並將在未來版本中從PHP中刪除。

+0

謝謝它的作品! – Hurrem 2013-03-27 09:34:23

+0

不客氣。 – Joni 2013-03-27 09:37:16

+0

此擴展從PHP 5.5.0開始已棄用。所以你必須使用mysql_query(「set names utf8;」); – 2013-03-27 09:38:54