2013-03-27 61 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