【发布时间】:2019-10-16 17:45:14
【问题描述】:
我遇到了我确定是编码错误,但我似乎无法在我的逻辑中找到薄弱环节。特别是,当尝试将希腊 lambda 插入我的数据库时,该 lambda 之后的单元格是空白的。
过程:
在打印任何 html 之前,我正在做:
header('Content-Type: text/html; charset=utf-8');
接下来,我正在使用 PDO 进行连接:
$dsn = 'mysql:host=' . $config['host'] . ';dbname=' . $config['dbname'] . ';charset=utf8';
$options = array(
PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
);
try {
$dbh = new PDO($dsn, $config['username'], $config['password'], $options);
$dbh->exec("SET NAMES utf8");
$dbh->exec("SET FOREIGN_KEY_CHECKS = 1");
当我这样做时
显示来自 my_table 的完整列
我可以看到排序规则是 utf8_general_ci。 当我这样做时:
echo mb_detect_encoding($data_to_be_entered);
我得到了 UTF-8
当我在将 $data_to_be_entered 插入数据库之前将其回显到控制台时,我看到:(????=23)
但是,在我的数据库中,我只看到 ( 作为条目。
【问题讨论】:
-
@Atif - 您的参考资料谈到了 Mojibake;这里的问题是截断。结果证明不是希腊语。
标签: php mysql pdo encoding character-encoding