-1

我今天正在处理一些棘手的事情......我有一个带有 UTF-8 编码和 utf8_general_ci 排序规则的 MySQL 数据库。所有特殊字符都正确插入,但不是日文。这是我用来插入新行的代码:

$dbConnection = new PDO("mysql:host=000.000.000.000;dbname=db_name", "db_user", "db_pass", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$parameterArray = array();
$parameterArray[":1"] = utf8_encode($message);

$queryResult = $dbConnection->prepare(QUERY_USERS_INSERT_MESSAGE);
$queryResult->execute($parameterArray);

插入拉丁字符时一切正常,即使是像ñ,à,ë,...这样的特殊字符,但是当我尝试插入像たなは这样的日文字符时,MySQL会插入NULL ...

有任何想法吗?我已经在谷歌上搜索了几个小时...

4

2 回答 2

0

问题解决了各位:

@deceze 和 @Daniel_Vérité 得到了正确答案。

utf8_encode 是问题所在。

谢谢你。

于 2013-07-04T16:05:13.277 回答
-4

通过添加解决的utf8_encode问题$this->conn->exec("set names utf8");

例子:

$this->conn->exec("set names utf8_encode");

谢谢你。

于 2017-11-21T12:10:20.390 回答