【问题标题】:Character encoding is missing at a point某处缺少字符编码
【发布时间】: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


【解决方案1】:

您还需要将字符集放入您的 html 代码中。 这对我的变音符号有帮助;)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" /><!-- THIS IS WHAT NEEDED -->
    </head>
    <body>
    </body>
</html>

添加后,我没有问题。 我也在完整的数据库中使用 UTF-8,所以这应该不是问题。

【讨论】:

    猜你喜欢
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多