0

我希望能解释为什么某些 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);

感谢您的时间和投入。

4

1 回答 1

1

您没有提到的两个步骤:

于 2013-02-25T16:53:13.713 回答