编辑:
好的我从MySQL数据库表中提取了一些数据(大量数据),没有关于如何输入数据的特殊信息。解析数据并将其重新显示到Firefox时,此符号 出现。当我将它与数据库条目进行比较时,它看起来像一个空格(没什么特别的)。我正在使用所有默认的PHP / MySQL设置。
执行var_dump或print_r也无济于事。
有什么想法吗?
符号:
更新:
好的,我确实找到了造成问题的角色
-
不要与
混淆-
(连字符)。
答案 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)
答案 7 :(得分:0)
为什么不在javascript中尝试使用正则表达式来反对Gumbo在呈现网页后识别为“...字符 ...替换字符(U + FFFD)” - 这样您就不必乱用数据库(你似乎非常不愿意做的事情)以及任何轻微的性能损失被卸载到客户端。