[英]PDO UTF-8 encoding issue?
我正在使用PDO连接到MYSQL数据库
数据库中的所有表都具有utf8_unicode_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");
}
?>
在本地主机中,我在编码方面没有问题,但是当我将源上传到主机时,我看到了?????? 而不是字符?
这个:
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES utf8');
完全没有意义。 参见http://php.net/manual/en/ref.pdo-mysql.php 。 建立连接后MYSQL_ATTR_INIT_COMMAND
执行MYSQL_ATTR_INIT_COMMAND
不执行。 如果在已经完全创建的PDO对象上进行设置,则为时已晚,并且永远不会执行。 您需要将其传递给构造函数:
new PDO(..., ..., ..., array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'))
或者,如果您的PHP版本支持它,则将charset=utf8
添加到DSN。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.