编辑:php删除/标识此符号
好吧我有一些数据(大量的数据)从MySQL数据库表中取出,没有什么特别的数据输入方式。解析数据并将其重新显示到Firefox时,此符号会显示出来。当我将它与数据库条目进行比较时,它看起来像一个空间(没什么特别的)。我正在使用所有默认的PHP/MySQL设置。
做一个var_dump或print_r也没有帮助。
有什么想法?
的符号:
UPDATE:
好吧,我确实发现导致问题的
人物 -
不要与
混淆 -
(连字符)。
编辑:php删除/标识此符号
好吧我有一些数据(大量的数据)从MySQL数据库表中取出,没有什么特别的数据输入方式。解析数据并将其重新显示到Firefox时,此符号会显示出来。当我将它与数据库条目进行比较时,它看起来像一个空间(没什么特别的)。我正在使用所有默认的PHP/MySQL设置。
做一个var_dump或print_r也没有帮助。
有什么想法?
的符号:
UPDATE:
好吧,我确实发现导致问题的
人物 -
不要与
混淆 -
(连字符)。
字符�
是REPLACEMENT CHARACTER (U+FFFD)。当有一个UTF码中的错误它是用来:
未知的或不可表示FFFD替换字符
- 用于代替进入的字符,它的值是以Unicode
在大多数情况下,这意味着某些数据会使用UTF编码进行解释,而数据不是使用该编码进行编码,而是使用其他编码进行编码。
非常好,谢谢你的确认,但我该如何删除它? str_replace和preg_match不起作用 – 2010-02-19 17:22:52
@Phill Pafford:这个字符表示你的字符编码有问题。解决这个问题,你的角色应该正确显示。 – Gumbo 2010-02-19 17:24:00
@gumbo超过100000条记录,少于1%以这种方式显示。我只是希望能够验证符号并从字符串中删除,但目前为止没有任何工作,思路? – 2010-02-19 17:28:56
一个非常模糊的问题。不知何故,检查你的网站的编码,你的数据库的数据编码等等。
编辑:这是一个答案,因为缺陷是DB数据编码(可能在utf-8)和webapp编码(可能在iso-8859-1)之间不匹配。因此,该解决方案通过以下任一方式进行:
1.)备份并擦除数据库,然后使用正确的编码加载它 2.)更改webapp的编码,以便正确显示字符。
问候,
这意味着一个字符,不可用在设置的当前字体的字符。一旦你找到它来自哪里,你就需要用HTML实体对它进行编码。
该字符表示存在您的浏览器不知道如何显示的代码点。某处您将字符值设置为正常可打印字符范围之外的内容,并且您的浏览器通过显示标准“未知”字符来告诉您。
解决问题的唯一方法是找到将无效字符放入字符串中的错误。
你在说什么?你在哪里看到这个?如果它在浏览器上的呈现页面上,那么你可能已经用不正确的编码保存了该文件。保存页面/源文件时使用UTF或unicode编码。
将文本从Microsoft Office产品粘贴到HTML或数据库时,这是一个常见问题。最大的违规者似乎是模特(你发现)和聪明的报价。我发现,当用户坚持使用不兼容的文本编辑器时,我发现一种解决方案是先将它们粘贴到记事本之类的东西中,以去除专有符号。
显然,最好的解决方案就是不要使用单词作为网页显示的文本数据。
添加只是为了向未来的读者提供一些信息。
问候, 的Jc
感谢这个解释很多 – 2010-02-19 20:46:54
你可以看看的iconv()和MB_ *功能,如果你只是想清理数据。
其他地方观察到的最可能的原因是您在字符编码方面存在问题。在版本6之前,PHP并不擅长处理字符编码(处理字节数组并将编码问题留给开发人员处理)。
确保您使用与数据库相同的字符编码显示页面,并确保在将其粘贴之前将所有用户输入转换为相同的字符编码(iconv()和mb_detect_encoding()将有所帮助)数据库。
谢谢这很有趣,将不得不尝试这个 – 2010-02-19 20:47:27
为什么不在JavaScript中针对Gumbo在呈现网页后识别为“...字符⋯...替换字符(U + FFFD)”的正则表达式 - 通过这种方式,您不必乱用数据库(你似乎很不情愿这么做),并且任何小的性能损失都会被卸载到客户端。
它就在那里!去掉它!! – Jasarien 2010-02-19 17:12:13
@Jasarien你是一个有趣的人 – 2010-02-19 17:13:42
它可能是U + FFFC或U + FFFD,意思是你在某处有编码问题? – jball 2010-02-19 17:14:25