无论我想做什么。如果我使用 öäå 或进行 while 循环,从数据库中包含 öäå 的行插入,它看起来像 öäå。
它一定与 PDO 有关,因为它与 mysql_* 一起工作得很好。
虽然我在 mysql_* 中有这些属性:
# mysql_set_charset("utf8",$link);
# mysql_query("SET NAMES 'UTF8'");
我在 PDO 中的连接如下所示:
$connect = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset:UTF-8", DB_USER, DB_PASS, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
我该如何解决这个问题?我相信我在某处也需要“设置名称”,如何?
最佳答案
SET NAMES 'UTF8'
语句是正确的,但你必须每次都执行它。您可以指示 PDO 自动运行命令:
$dsn = sprintf( 'mysql:dbname=%s;host=%s', DB_NAME, DB_HOST );
$driver_options = array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' );
try {
$dbc = new pdo($dsn, $user, $pw, $driver_options);
}
catch (PDOException $e) {
// Handle exception
}
(通过 Galen Grover )
关于mysql - PHP PDO : chars ÖÄÅ wont show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4381324/