【问题标题】:UTF-8 page to UTF-8 database table showing incorrectUTF-8 页面到 UTF-8 数据库表显示不正确
【发布时间】:2013-02-26 00:53:13
【问题描述】:

我希望解释为什么某些 UTF-8 文本被错误地保存到数据库表中...

我创建了一个 HTML 表单,页面的元内容设置为 UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

PHP 和模板文件都是 Unicode/UTF-8。

表单字段数据被提交到utf8_unicode_ci 编码的数据库表中。

如果我提交带有“éçä”(我从 Windows 的字符映射程序设置为 Unicode 字符集创建)等字符的表单,它们在数据库中显示不正确(“éçä”)。我正在通过 phpMyAdmin(也设置为 UTF-8 字符编码)查看数据库。

但是,如果我在将字符串插入数据库之前对字符串运行 iconv() 以转换为 ISO-8859-1,则字符会正确显示:

$input = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $input);

发生了什么事?从头到尾一切都是 UTF-8/Unicode 的事实不应该导致它在数据库中是正确的吗?我做错了什么,为什么将数据转换为 ISO-8859-1 有效?

对数据所做的唯一其他事情是 FILTER_SANITIZE_MAGIC_QUOTES:

$input = filter_var($input,FILTER_SANITIZE_MAGIC_QUOTES);

感谢您的宝贵时间和意见。

【问题讨论】:

    标签: php mysql utf-8


    【解决方案1】:

    你没有提到的两个步骤:

    【讨论】:

    • 啊哈!它在 PDO 中指定字符集。非常感谢你,阿尔瓦罗。
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2014-09-23
    • 2011-08-09
    • 1970-01-01
    相关资源
    最近更新 更多