2

我的数据库中有非标准字符(由于换行符)。

我的 HTML 验证器正在抱怨它们。

因为我的 HTML 验证器是我自我的直接延伸,所以我想让这件事保持愉快和绿色-ok-arrow-y。

以前做过这个的人有快速修复吗?

顺便说一句,我不想​​更改页面的字符集、文档类型或数据。只是在寻找一种utf8_decode()可以清理字符串的类型,但utf8_encode()不起作用utf8_decode()......

更新

抱歉,“非标准字符”有点含糊,但这个错误警告也是如此。具体来说,它们不是SGML 字符,显然不适合 SGML 解析器……但现在我进入了模糊的领域,不确定发生了什么。

4

1 回答 1

2

如果使用非标准字符是指 XHTML 验证器在您的文档中看到 XML 规范不允许的字符,此处为: http: //www.w3.org/TR/xml/#charsets那么您的解决方案是使用 XML 实体来转义它们。例如,如果您有非法字符 U+0004,那么您可以在写出之前将其转换为 PHP。

如果非标准字符的意思是您的字节序列被严重破坏以至于它不是 UTF-8 的合法字节序列(即无法解码),那么您的应用程序中存在逻辑错误。也许您正在读取字节而不是要求 PHP 读取字符并正确编码它们。

编辑:作为对上述关于非法字符为 30 的评论的回应,这确实是 XML 和 XHTML 中的非法字符。如果您打算将它们作为换行符,请执行 php 正则表达式替换以替换\x1E\n.

于 2011-07-12T03:17:22.180 回答