无论我想做什么。如果我插入öäå或进行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));
我该如何解决这个问题?我相信我还需要某处的“设置名称”,怎么样?
答案 0 :(得分:0)
öäå
。您将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)