PHP PDO:charsÖÄÅ不会显示

时间:2010-12-07 20:36:44

标签: mysql character-encoding pdo

无论我想做什么。如果我插入öäå或进行while循环,来自db的行,并包含öäå,它看起来像是öå。

它必须与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));

我该如何解决这个问题?我相信我还需要某处的“设置名称”,怎么样?

2 个答案:

答案 0 :(得分:0)

如果您尝试在设置为非UTF解码方案的视图中显示UTF-8,则会看到

öäå。您将UTF-8编码数据插入非UTF8数据库或数据库是UTF8,但显示结果的终端未设置为UTF8。

答案 1 :(得分:0)

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