我的数据库中出现了非标准字符(由于换行)。
我的HTML验证器正在抱怨它们。
因为我的HTML验证器是我自我的直接扩展,所以我想让它保持愉快和绿色。
以前做过这个的人有快速修复吗?
顺便说一句,我不想改变页面的字符集,文档类型或数据。只是寻找一个utf8_decode()
类型的东西,将清理字符串,但utf8_encode()
和utf8_decode()
不工作…
对不起,"非标准字符"有点模糊,但这个错误警告也是如此。具体来说,它们是而不是 SGML字符,显然不适合SGML解析器…但现在我进入了模糊的领域,不知道发生了什么。
如果您所说的非标准字符是指XHTML验证器在文档中看到XML规范不允许的字符,在这里:http://www.w3.org/TR/xml/#charsets,那么您的解决方案是使用XML实体来转义它们。例如,如果您有非法字符U+0004,那么您可以在PHP中将其转换为
,然后再将其写出来。
如果通过非标准字符,您的意思是您的字节序列被破坏到不是UTF-8的合法字节序列(即,它不能被解码),那么您的应用程序中存在逻辑错误。也许你正在读取字节,而不是要求PHP读取字符并正确编码。
编辑:对于上面关于非法字符为30的评论,这在XML和XHTML中确实是一个非法字符。如果您希望它们是换行符,那么使用php regex替换将'x1E
替换为'n
。