希腊字母在我的数据库中为空之后的所有内容

问题描述 投票:0回答:1

我遇到了确定为编码错误的错误,但似乎找不到逻辑上的薄弱环节。特别是,当尝试在我的数据库中插入希腊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)

但是,在我的数据库中,我仅看到(作为条目。

php mysql pdo encoding character-encoding
1个回答
0
投票

lambda 𝜆是数学符号。它以UTF-8编码为four字节的十六进制F09D9C86。因此,它需要MySQL CHARACTER SET utf8mb4,而不是utf8。

如果需要希腊语lambda λ,则可以与CHARACTER SET utf8(或utf8mb4)配合使用。十六进制为CEBB

© www.soinside.com 2019 - 2024. All rights reserved.