2

データベースから非標準の文字が出てきました(改行が原因です)。

私のHTMLバリデーターはそれらについて不平を言っています。

私のHTMLバリデーターは私のエゴの直接の拡張であるため、私は物事を幸せで、green-ok-arrow-yに保ちたいと思います。

以前にこれを行ったことがある人は簡単に修正できますか?

ところで、ページの文字セット、Doctype、またはデータを変更したくありません。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 に答える