mysql - PHP PDO : chars ÖÄÅ wont show

标签 mysql character-encoding pdo

无论我想做什么。如果我使用 öäå 或进行 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/

相关文章:

ruby-on-rails - 奇怪的字符编码问题

php - 字符集编码 PHP/MySQL

php - Mysqli 总是以字符串形式返回数字

php - 在服务器(PHP)上存储文件的可扩展方式?

mysql - SQL 选择早于 X 的非标准日期

php在每个foreach之后获取数组中的一些元素

MySQL:为表B中的每个成员减去表A中行中的两个值

JavaScript - 如何转换 unicode 字符?英语数字到波斯语数字

php - PDO 期望数组在网页上不只返回 1 的 boolean 值

php - 使用 PDO 从数据库中提取值