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

从web表单输入中清除php字符串

  •  1
  • meme  · 技术社区  · 16 年前

    我有一个获取客户信息的Web表单。表单是使用php 5.1.6处理的,因此使用filter_input()将不起作用。

    表单有一个文本区域以及一些其他标准字段。我得到了很多奇怪的格式代码,它们存储在我们的MySQL数据库中。如何筛选这些结果,使它们看起来符合字符串的格式?

    以前
    孩子在哪里?房间?我想是吗?在房子的北边。你知道它在哪里吗?

    之后(这是我想看到的)
    孩子的房间在哪里?我想它在房子的北边。你知道它在哪里吗?

    3 回复  |  直到 16 年前
        1
  •  1
  •   Christopher Gutteridge    16 年前

    这几乎可以肯定是由于有人从一个不兼容的字符集中剪切和粘贴。

    最好的猜测是,他们是从使用非ASCII Unicode符号作为引号和语音标记的Microsoft Word中完成的,而不是普通友好的ASCII符号。UTF-8编码为一系列80-FF中的两个或多个字节,但网页通常设置为“Latin-1”,它将这些字节视为单个字符,通常是带重音的a-z。如果你看到2或3个字符,你会想到其中一个,其中一些是带有重音的奇怪的拉丁符号,它 几乎 总是意味着你的数据是UTF-8,但它是由拉丁语-1呈现的。

    例外是当它被输入为utf-8和系统时 预期 首先是拉丁语-1。确保HTML表单显式设置字符类型。

    一般来说,我建议您让所有基于Web的工具都使用“utf-8”,而没有一个非常好的理由不使用它。

    更新: 这有点恶心,但我建议您不要太担心数据库字符集。实际上,我们应该默认为utf-8,但是如果您将utf-8数据放入拉丁-1表中,那么返回的结果仍然是utf-8,只要没有任何问题询问数据库它认为发送给您什么。我要说的是,MySQL不太可能导致这个问题。它要么是剪切粘贴,要么是浏览器,要么是Web表单,要么是从表单中读取并写入数据库的代码,要么是从数据库中读取并呈现HTML的代码。

    尝试使用iffy字符检查页面的字符编码。尝试将其设置为utf-8或在浏览器中强制使用utf-8。在Firefox中查看字符编码。

        2
  •  1
  •   Galen    16 年前

    他们正在向您的数据库发送utf8字符串,您的数据库可能需要拉丁文。首先确保您的表设置为utf8,如果它没有设置为utf8。然后尝试在执行任何其他操作之前运行此查询:

    set names utf8
    

    这会将连接的字符集设置为utf8。然后您可以运行其他查询。

    读下面这个:

    http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

        3
  •  0
  •   Andreas    16 年前

    在阅读了你的帖子之后,我唯一能告诉你的就是检查你的表单标签,并将“accept charset”属性添加到你想要的值中。

    由于这是一个问题,您与从表单发布的数据,那么您可能想要检查它。

    如果在数据库表中存储数据后出现此问题,则可能需要检查数据库表字符串排序/字符集。

    推荐文章