php删除/识别此符号

时间:2010-02-19 17:11:40

标签: php encoding

编辑:

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

执行var_dump或print_r也无济于事。

有什么想法吗?

符号:

更新:

好的,我确实找到了造成问题的角色

-

不要与

混淆

-

(连字符)。

8 个答案:

答案 0 :(得分:12)

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

  

FFFD 替换字符

     
      
  • 用于替换Unicode
  • 中值未知或不可表示的传入字符   

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

答案 1 :(得分:1)

它表示当前字体的字符集中不可用的字符。一旦找到它的来源,就需要用HTML实体对其进行编码。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

将文本从Microsoft Office产品粘贴到html或数据库时,这是一个常见问题。最大的罪犯似乎是emdash(正如你所发现的)和聪明的报价。当用户坚持使用不兼容的文本编辑器时,我发现的一个解决方案就是让它们首先将它粘贴到记事本中,以剥离专有符号。

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

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

此致 JC

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

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

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

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

此致

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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