快把我逼疯了...
带有表单的页面通过以下方式编码为 Unicode (UTF-8):
<meta http-equiv="content-type" content="text/html; charset=utf-8">
数据库中的条目列是 text utf8_unicode_ci
从包含 "的 Word 文档中复制文本,如下所示: “1922.”
会立即失败,并最终在数据库中显示为 â��1922.â��
(在表单中输入新数据,包括 "
工作正常。 .它是从 Word 剪切并粘贴的...)
PHP 幕后步骤是:
- 从 POST 中获取值(value)
- 通过 HTML Purifier 默认设置运行
- 运行 mysql_real_escape_string
- 将查询插入数据库
帮忙?
最佳答案
“1922。”
和“1922。”是 2 个不同的字符串。
word 中的引号不是双引号“!=”
您描述的列是text utf8_unicode_ci
。 utf8_unicode_ci
是排序规则,确保该列上的字符集设置为 utf8
。
然后我将确保您使用 SET NAMES utf8 COLLATE utf8_unicode_ci...
如果您已完成此操作但仍未正确保存,请确保您的 php 已启用 mbstrings 并尝试使用 mb_
函数。
您可能有很多根本原因,但我认为列上的字符集
和SET NAMES ...
应该可以解决它。
关于php - 表单和 HTML Purifier/MySQL 的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2729476/