【发布时间】:2015-06-09 19:32:04
【问题描述】:
我正在尝试在 mysql 数据库中插入数据。这些数据中通常包含德语变音符号。
我正在使用这种方法:
function insertMenue($content, $date) {
$session = $_SESSION['aid'];
global $pdo;
$pdo->exec('SET CHARACTER SET utf8');
$params = ["menue", "<p>".changeAttr($content)."</p>", $date, $session];
// Check all your params are set...
// Although you may want to consider checking these before entering this block
print_r($params);
echo "c".changeAttr($content);
print_r("v". changeAttr($content));
$sql = "INSERT INTO menue( type
, content
, date
, creator
)
VALUES( ?
, ?
, ?
, ?
)";
try {
$sth = $pdo->prepare($sql);
$sth->execute($params);
} catch (PDOException $e) {
throw new pdoDbException($e);
}
}
如您所见,我已经在进行一些调试。 我从 Excel .xls 文件中获取数据。 print_r 授予如下输出:
Salat
****
Trutenpiccata Tomatensauce
Spaghetti
Gem�sebuffet
-
****
Saisonfr�chte
当我检查 mysql 数据库时,包括 � 和 after 在内的所有内容都被删除了。 喜欢:
Salat
****
Trutenpiccata Tomatensauce
Spaghetti
Gem
我尝试从插入方法开始将数据编码为 utf-8,并通过以下方式将数据库设置为 utf-8:
ALTER DATABASE mensaapp CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE menue CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
我在哪里错过了将数据编码为 utf-8 的要点?
【问题讨论】:
-
您确定
$params是utf8 格式吗? -
另外,验证您的客户端握手设置....
-
stackoverflow.com/questions/279170/utf-8-all-the-way-through 您需要确保系统的每个阶段都使用相同的字符集,或者与适当的翻译逻辑挂钩。
-
@venca,我怎样才能确保这一点?
-
utf8_encode($content)做得很好。
标签: php mysql pdo encoding utf-8