【问题标题】:php remove/identify this symbol �php 删除/识别此符号 �
【发布时间】:2010-02-19 17:11:39
【问题描述】:

编辑:

好的,我从 MySQL 数据库表中提取了一些数据(大量数据),数据的输入方式没有什么特别之处。解析数据并将其重新显示到 Firefox 时,会显示此符号。当我将它与数据库条目进行比较时,它看起来像一个空格(没什么特别的)。我正在使用所有默认的 PHP/MySQL 设置。

执行 var_dump 或 print_r 也无济于事。

有什么想法吗?

符号:�

更新:

好的,我确实找到了导致问题的角色

-

不要与

混淆

-

(连字符)。

【问题讨论】:

  • 就在那儿!删除它!
  • 可能是U+FFFC或者U+FFFD,说明你的编码有问题?
  • @Jasarien Heh,你真的让我笑了,伙计
  • 可能只有我一个人,但我没有正确理解问题
  • 我非常想编辑问题并将其删除。星期五和所有...

标签: php encoding


【解决方案1】:

字符REPLACEMENT CHARACTER (U+FFFD)。它在 UTF 代码中出现错误时使用:

FFFD - 替换字符

  • 用于替换传入的字符,其值在 Unicode 中未知或无法表示

在大多数情况下,这意味着某些数据使用 UTF 编码进行解释,而数据未使用该编码进行编码,而是使用不同的编码。

【讨论】:

  • @Phill Pafford:这个字符意味着你的字符编码有问题。解决这个问题,你的角色应该可以正确显示。
  • @gumbo 超过 100000 条记录和不到 1% 的记录以这种方式显示。我只想能够验证符号并从字符串中删除,但到目前为止没有任何工作,Ideas?
  • @Phill Pafford:为什么不解决编码问题?显然是数据或该数据的呈现导致了这种行为。
  • Phill,您似乎不明白这个字符在数据库中或发送到浏览器的输出中不存在。这是浏览器放入的符号,因为编码无效。检查您的数据库和输出是否使用相同的编码。
  • 我和 Phill 在一起,那个人正在寻求使用通用的通用函数来消除错误,而没有调查它。不应该有这样的功能不存在的理由。
【解决方案2】:

表示当前字体的字符集中没有的字符。找到它的来源后,您需要使用 HTML 实体对其进行编码。

【讨论】:

    【解决方案3】:

    该字符表示您的浏览器不知道如何显示一个代码点。您在某处将字符值设置为正常可打印字符范围之外的值,而您的浏览器通过显示标准的“未知”字符来告诉您。

    解决问题的唯一方法是首先找到将无效字符放入字符串的错误。

    【讨论】:

      【解决方案4】:

      这是将文本从 microsoft office 产品粘贴到 html 或数据库时的常见问题。最大的违规者似乎是 emdash(如您所见)和智能引号。当用户坚持使用不合规的文本编辑器时,我发现的一种解决方案是让他们先将其粘贴到记事本之类的东西中,以去除专有符号。

      显然,最好的解决方案是不要将 word 用于用于 Web 显示的文本数据。

      添加只是为了向未来的读者提供一些信息。

      问候, Jc

      【讨论】:

        【解决方案5】:

        如果您只是想清理数据,可以查看 iconv() 和 mb_* 函数。

        在其他地方观察到的最可能的原因是您遇到了字符编码问题。 PHP 在版本 6 之前并不是很擅长处理字符编码(处理字节数组并将编码问题或多或少留给开发人员处理)。

        确保以与数据库相同的字符编码显示页面,并确保将所有用户输入转换为相同的字符编码(iconv() 和 mb_detect_encoding() 会有所帮助),然后再将其粘贴到数据库。

        【讨论】:

        • 谢谢,这很有趣,一定要试试这个
        【解决方案6】:

        你在说什么?你在哪里见过这个?如果它在浏览器上呈现的页面上,那么您可能使用不正确的编码保存了文件。保存页面/源文件时使用 UTF 或 unicode 编码。

        【讨论】:

          【解决方案7】:

          一个非常模糊的问题。不知何故,检查你的网站的编码,你的数据库的数据编码等等。

          编辑:这是一个答案,因为该缺陷是 DB 数据编码(可能在 utf-8 上)和 webapp 编码(可能在 iso-8859-1 上)之间的不匹配。因此,解决方案是:

          1.) 备份并清除数据库,然后使用正确的编码加载它 2.) 更改 webapp 的编码,以便正确显示字符。

          问候,

          【讨论】:

          • 不是答案。你应该发表评论。
          • @edit 超过 100000 条记录,只有不到 1% 的记录以这种方式显示。我只想能够验证符号并从字符串中删除,但到目前为止没有任何效果
          • 你可能找不到它。正如 Gumbo 所说,它是您的浏览器使用的替换字符,用于指出它无法理解的字符问题。因此,识别具有错误的特定数据并在数据库中获取它。检查它的保存方式
          【解决方案8】:

          为什么不在呈现网页后尝试在 javascript 中针对 Gumbo 识别为“...字符 ... 替换字符 (U+FFFD)”的正则表达式 - 这样您就不必弄乱数据库(您似乎非常不愿意这样做)并且任何轻微的性能损失都会被卸载到客户端。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-03-26
            • 1970-01-01
            • 2015-12-15
            • 1970-01-01
            • 2011-03-27
            • 2015-01-13
            • 1970-01-01
            • 2013-04-14
            相关资源
            最近更新 更多