"iconv" - Funktion manchmal gibt mir eine Fehlermeldung:
Notice:
iconv() [function.iconv]:
Detected an incomplete multibyte character in input string in [...]
Gibt es eine Möglichkeit zu erkennen, dass es illegale Zeichen in utf-8-string, bevor Sie Daten zu inconv ?
InformationsquelleAutor der Frage rsk82 | 2011-07-17
Beachten Sie zunächst, dass es nicht möglich ist, zu erkennen, ob der text gehört zu einem bestimmten unerwünschten Codierung. Sie können nur prüfen, ob ein string gültig ist, in einer bestimmten Kodierung.
Können Sie machen Verwendung des UTF-8-überprüfung, die verfügbar ist in
preg_match
[PHP-Handbuch] seit PHP 4.3.5. Wird es wieder0
(ohne zusätzliche Informationen), wenn eine ungültige Zeichenfolge ist gegeben:Andere Möglichkeit ist
mb_check_encoding
[PHP-Handbuch]:Andere Funktion, die Sie verwenden können, ist
mb_detect_encoding
[PHP-Handbuch]:Ist es wichtig, die
strict
parametertrue
.Darüber hinaus
iconv
[PHP-Handbuch] können Sie ändern/löschen von ungültigen Sequenzen on-the-fly. (Allerdings, wenniconv
trifft auf eine solche Sequenz, erzeugt es eine Meldung; dieses Verhalten kann nicht geändert werden.)Können Sie
@
und überprüfen Sie die Länge der Zeichenkette zurückgeben:Prüfen Sie die Beispiele auf der
iconv
Handbuch-Seite als auch.Haben Sie nicht gemeinsam den source-code, wo die Ankündigung ist, die aus. Sollten Sie es hinzufügen, wenn Sie möchten, eine konkrete Anregung.
InformationsquelleAutor der Antwort hakre
Sie könnten versuchen, mit
mb_detect_encoding
zu erkennen, wenn Sie haben einen anderen Zeichensatz als UTF-8) dannmb_convert_encoding
konvertieren zu UTF-8, wenn erforderlich. Es ist wahrscheinlicher, dass die Leute Ihnen die Gültigkeit des Inhalts in einen anderen Zeichensatz als das geben Sie ungültige UTF-8.InformationsquelleAutor der Antwort Robin
Der Spezifikation, auf die Zeichen, die ungültig sind, die in UTF-8 ist ziemlich klar. Sie wahrscheinlich wollen, Streifen Sie diese heraus, bevor Sie versuchen zu analysieren. Sie sollten nicht dort sein, so dass, wenn Sie vermeiden es sogar vor der Erzeugung des XML-Codes, wäre sogar noch besser.
Sehen Sie hier eine Referenz:
http://www.w3.org/TR/xml/#charsets
Dies ist keine vollständige Liste, viele parser auch verbieten einige low-numbered control-Zeichen, aber ich kann nicht finden, eine umfassende Liste jetzt.
Jedoch, iconv haben könnte builtin support für diese:
http://www.zeitoun.net/articles/clear-invalid-utf8/start
InformationsquelleAutor der Antwort jishi
setzen Sie ein @ vor iconv() zu unterdrücken, die Kenntnisnahme und ein //IGNORIEREN nach UTF-8 in-source-id-Codierung zu ignorieren ungültige Zeichen:
InformationsquelleAutor der Antwort nobody