Php PDO,获取编码错误

Php PDO,获取编码错误,php,mysql,mysqli,pdo,utf-8,Php,Mysql,Mysqli,Pdo,Utf 8,不久前,我建立了一个网站,使用mysqli访问包含用户信息的数据库。该数据库包含一些西里尔文文本 昨天我用PDO替换了mysqli。现在所有西里尔语都是这样的: Ð 我到处都有UTF8编码。这是我的密码: $pdo = new PDO('mysql:host=mysql.host.com;dbname=db;charset=utf8', 'database', 'password'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_

不久前,我建立了一个网站,使用mysqli访问包含用户信息的数据库。该数据库包含一些西里尔文文本

昨天我用PDO替换了mysqli。现在所有西里尔语都是这样的:

Ð

我到处都有UTF8编码。这是我的密码:

$pdo = new PDO('mysql:host=mysql.host.com;dbname=db;charset=utf8', 
'database', 'password');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec("set names utf8");
return $pdo;
在页面上

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

原因可能是什么


我在谷歌上搜索了很多,但找不到解决办法

PDO构造函数调用的最后一个参数是特定于驱动程序的选项,作为一个包含key=>value对的数组提供。MySQL驱动程序有一个
PDO::MySQL_ATTR_INIT_COMMAND
选项,您可以在其中指定每次连接到数据库时执行的命令

您可以使用MySQL特定的查询
SET NAMES utf8
作为init命令的值,告诉MySQL使用UTF-8作为连接的字符集:

$pdo = new PDO('mysql:host=mysql.host.com;dbname=db;array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"', 
'database', 'password');

确保数据库也是utf-8格式,这可能会有所帮助:您也可以使用PDO。胡乱猜测:您数据库中的数据实际上是乱七八糟的,因为您迄今为止没有在mysqli中设置正确的字符集?请参阅OK中的“Mojibake”,谢谢您的指导。我添加了说明。是否足够??