Php PDO UTF-8编码问题?

Php PDO UTF-8编码问题?,php,mysql,utf-8,pdo,Php,Mysql,Utf 8,Pdo,我正在使用PDO连接MYSQL数据库 数据库中的所有表都有utf8\u unicode\u ci排序规则 这是我的连接代码: <?php $mysql_username = "root"; $mysql_password = ""; $mysql_host = "localhost"; $mysql_database = "cms"; try { //connect global $db; $db = new PDO('mysql:dbname=' . $mysq

我正在使用PDO连接MYSQL数据库

数据库中的所有表都有utf8\u unicode\u ci排序规则

这是我的连接代码:

<?php
$mysql_username = "root";
$mysql_password = "";
$mysql_host = "localhost";
$mysql_database = "cms";

try
{
    //connect
    global $db;
    $db = new PDO('mysql:dbname=' . $mysql_database . ';host=' . $mysql_host . ';charset=utf8;', $mysql_username, $mysql_password);
    $db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $ex)
{
    die("Unable Connect To DataBase");
}
?>

在localhost中,我对编码没有问题,但当我将源代码上载到主机时,我看到的是??,而不是字符?

这:

$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
这完全没有意义。看见
MYSQL\u ATTR\u INIT\u命令将在建立连接后立即执行,不迟于此。如果在已经完全创建的PDO对象上设置此选项,则为时已晚,而且它永远不会执行。您需要将其传递给构造函数:

new PDO(..., ..., ..., array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'))
或者,如果您的PHP版本支持它,请将
charset=utf8
添加到DSN。

此:

$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
这完全没有意义。看见
MYSQL\u ATTR\u INIT\u命令将在建立连接后立即执行,不迟于此。如果在已经完全创建的PDO对象上设置此选项,则为时已晚,而且它永远不会执行。您需要将其传递给构造函数:

new PDO(..., ..., ..., array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'))

或者,如果您的PHP版本支持它,请将
charset=utf8
添加到DSN。

我这样做了,但仍然没有效果其他所有设置是否正确?请参阅跳转到此链接:在CentOS 6、MySQL 5.1上工作得非常好。为我节省了一些查找时间,谢谢!我认为这应该被接受为正确的答案,我也有同样的答案???????对于汉字来说,这样做是有效的。完成了,成功了!此方法删除了我在Apache/2.2.15(CentOS)、Mysql 5.5.54上的错误。真的,谢谢。我做了,但仍然没有效果。其他一切都安排好了吗?请参阅跳转到此链接:在CentOS 6、MySQL 5.1上工作得非常好。为我节省了一些查找时间,谢谢!我认为这应该被接受为正确的答案,我也有同样的答案???????对于汉字来说,这样做是有效的。完成了,成功了!此方法删除了我在Apache/2.2.15(CentOS)、Mysql 5.5.54上的错误。真的,谢谢你。