使用PHP显示Utf8_unicode_ci数据

时间:2016-03-31 14:23:52

标签: php encoding

我有数据库:

结果呢:

这个代码:



<?php

 
    $dbhost = '?';
    $dbuser = '?';
    $dbpass = '?';


    try {

        $dbh = new PDO("mysql:host=localhost;dbname=?", "?", "?");		
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $result = $dbh->query("SELECT * FROM DATACC");
			
		mysql_set_charset("UTF8");
		header('Content-type: text/html; charset=utf-8');
		

		} catch(PDOException $e) {
        echo $e->getMessage();
    }

	echo "<body>";
	
    echo "<table  class='bordered'>";
			
    foreach($result->fetchAll() as $row){
			echo "<tbody>";	
				echo "<tr class='alt'>";
					echo "<td width='20px'>" . $row["MaCC"] . "</td>";
					echo "<td>" . $row["HoVaTen_VN"] . "</td>";
					echo "<td>" . $row["NgaySinh"] . "</td>";
					echo "<td>" . $row["NoiSinh"] . "</td>";
					
				
				echo "</tr>";
			echo "</tbody>";	
    }
    echo "</talbe>";
	
	echo "</body>";
    $dbh = NULL;

?>
&#13;
&#13;
&#13;

你可以帮我解决这个问题吗? (我尝试了许多方法来修复此错误,因此仍然失败)。谢谢你!

2 个答案:

答案 0 :(得分:0)

您正在使用PDO但同时使用不是PDO的mysql_set_charset且不会影响您的PDO连接。

而是使用连接字符串到PDO,如:

try {

    $dbh = new PDO("mysql:host=localhost;dbname=?;charset=utf8", "?", "?");
    ...

作为第二个注释:

打开MySQL终端并使用以下命令:

SELECT T.table_name,CCSA.character_set_name 
FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA 
WHERE CCSA.collation_name = T.table_collation 
     AND T.table_schema = "<your dbname name>";

确保表格全部以UTF-8编码,因为您需要它们。

答案 1 :(得分:0)

使用PDO设置字符集有一种正确的唯一方法,这是DSN的一部分。

$dbh = new PDO("mysql:host=localhost;dbname=?;charset=utf8", "?", "?");