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