代码之家  ›  专栏  ›  技术社区  ›  Drew

表单和HTML净化器/MySQL的编码问题

  •  0
  • Drew  · 技术社区  · 16 年前

    带有表单的页面通过以下方式编码为Unicode(UTF-8):

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

    数据库中的条目列为 text utf8_unicode_ci

    从Word文档中复制包含“的文本,如下所示: “1922.” â��1922.â�� (在表单中键入新数据,包括 " 工作正常。。。它是从Word中剪切和粘贴的…)

    • 从POST获取值
    • 在数据库中插入查询

    救命啊?

    2 回复  |  直到 9 年前
        1
  •  1
  •   mike    16 年前

    “1922.” 和“1922”是两条不同的弦。
    word中的引号不是双引号“!=”

    你描述的专栏是 text utf8_unicode_ci . utf8_unicode_ci 是排序规则,请确保该列上的字符集设置为 utf8

    然后我会确保您为每个连接设置正确的编码,使用 SET NAMES utf8 COLLATE utf8_unicode_ci...

    如果您已经这样做了,但仍然没有正确保存,请确保您的php已启用mbstrings并尝试使用 mb_ 功能。

    charset 在列和上 SET NAMES ... 应该能解决的。

        2
  •  1
  •   bobince    16 年前

    mysql_set_charset 要让数据库知道您将向它发送UTF-8编码的字符串。

    在表单中输入新数据,包括“工作正常。。。

    " 是一个普通的ASCII引号。 不是,它们是智能引号,是非ASCII字符。它们是否来自文字并不重要;您的所有非ASCII字符将被视为相同的。

    • 从POST获取值

    撞车是完全错误的 全部的 输入文本。通常您应该允许任何旧文本,然后当您在HTML中输出该文本时,您应该调用 htmlspecialchars()

    否则你就破坏了用户的进入能力 < &

    推荐文章