为什么我用PDO插入非英语字符会变成怪物?

时间:2011-07-27 10:31:26

标签: php mysql unicode pdo phpmyadmin

这就是我在php中所做的:

$dbhandler = new PDO('mysql:host='.domain.':'.port.';dbname='.dbName.';',db_user,db_password);        

$stmt = $dbhandler->prepare("INSERT INTO ".myTable.
" (value) VALUES (:value)");
$stmt->bindValue(':value', "試打中文");

$stmt->execute();

这是我通过phpMyAdmin得到的:

試打中文

但是我可以在phpMyAdmin中手动插入中文,它会显示给怪物char ... 我做错了什么? (表字段的排序规则是:utf8_unicode_ci)。

谢谢。

2 个答案:

答案 0 :(得分:2)

将您的代码更改为:

$dbhandler = new PDO('mysql:host='.domain.':'.port.';dbname='.dbName.';',db_user,db_password, array(
  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
));

答案 1 :(得分:0)

尝试运行:

SET NAMES utf8;
SET CHARACTER_SET utf8;

在建立数据库连接后作为查询。