PHP/Mysql特殊字符插入被截断


PHP / Mysql special character inserts being truncated

我在数据库中插入带有特殊字符的单词时遇到问题。这个词似乎在特殊字符处被截断了。

我使用的是MySQL 5.1.41,我的数据库排序规则是utf8_general_ci。我使用PDO来促进数据库交互。

下面是我正在做的一个例子。

//$db is a PDO object
$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
//word with a special character 
$word = "pépite";
$sql = "INSERT INTO keyword(key_name) VALUES(?)";
$stmt = $db->prepare($sql);
$stmt->execute(array($word));

当执行此操作时,我只在数据库中得到"p",它似乎是字符é及其后的所有内容都被截断了。我不确定我在这里做错了什么。如果有人能提出我做得不对的地方,我将不胜感激。谢谢

试试这个

$db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
$word = utf8_encode('pépite');
$sql = "INSERT INTO keyword(key_name) VALUES(?)";
$stmt = $db->prepare($sql);
$stmt->execute(array($word));

utf8_encode|utf8_decode