使我抓狂...

具有表单的页面通过以下方式编码为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_ciutf8_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/

10-14 14:46