Problem mit einem Dokument: Ungültiges Byte 3 der 3-Byte-UTF-8-Sequenz

11172
joe

Ich versuche ein XML-Dokument zu verwenden, stoße jedoch auf diesen Fehler:

Invalid byte 3 of 3-byte UTF-8 sequence 

Mein Dokument sieht in etwa so aus, jedoch mit mehr Tags und Inhalten. Bitte konzentrieren Sie sich nicht auf das untenstehende Dokument. Ich verwende mehrere Dokumente mit diesem Format. Ich glaube, es ist ein Charakter in meinem Dokument, der ungültig ist, aber ich weiß nicht, wie er am besten gefunden werden kann, weil er so groß ist.

Irgendwelche Ideen oder Werkzeuge, die ich verwenden könnte? Vielen Dank.

Vielen Dank!

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "file:C:/Documentum/Viewed/map.dtd"> <map xmlns:dctm="http://www.documentum.com" dctm:obj_status="Read-Only" dctm:obj_id="09002af8800af696" dctm:version_label="CURRENT" xmlns:ditaarch="http://dita.oasis-open.org/architecture/2005/"> <title>Overview of the Commercial General Liability (CGL) Insurance Coverages </title><moreTagsHere><!-- more tags here... --></moreTagsHere> </map> 
2
Mit welcher Anwendung erstellen Sie das Dokument? Welche Anwendung verwenden Sie, um das Dokument zu "verwenden"? heavyd vor 14 Jahren 0

6 Antworten auf die Frage

1
joe

In meiner XML-Datei war ein ungültiges, lockiges Zitat.

ich auch. Vielen Dank für die Veröffentlichung als mögliche Antwort. Matt Felzani vor 9 Jahren 0
0
Chris W. Rea

Ich würde XMLStarlet versuchen :

[...] XMLStarlet ist eine Reihe von Befehlszeilen-Dienstprogrammen (Tools), mit denen XML-Dokumente und -Dateien mit einfachen Shell-Befehlen in ähnlicher Weise umgewandelt, abgefragt, validiert und bearbeitet werden können UNIX-Befehle für grep, sed, awk, diff, patch, join usw. [...]
[ mein Schwerpunkt ]

0
salmonmoose

Ich habe den Verdacht, dass Sie ein Tool von Microsoft verwenden.

Meiner Erfahrung nach hat Expression Web Kopfzeileninformationen in Textdateien eingefügt, um sie als Format zu identifizieren - nichts anderes erkannte sie und zeigte sich als zufällige Zeichen. Dies war insbesondere ein Problem mit PHP, da es die Pleite einschlug.

0
Paxxi

Sie haben wahrscheinlich einen Editor verwendet, der der Datei eine Byte Order Mark (BOM) hinzufügt . Mit vielen / den meisten XML-Editoren / Website-Editoren können Sie das Dokument mit / ohne das bom speichern. Überprüfen Sie die Speicheroptionen in dem von Ihnen verwendeten Editor.

Sie müssen wahrscheinlich die Stückliste entfernen, um den Fehler zu vermeiden.

Wenn Ihr Editor diese Option nicht unterstützt, kann ich das ausgezeichnete Notepad ++ empfehlen

Ich habe noch nie gesehen, dass die UTF-8-Stückliste von den XML-Spezifikationen verboten wurde (und sicherlich sind andere Stücklisten vollkommen in Ordnung). Tatsächlich ist die automatische Erkennung dokumentiert, um die Verwendung einer Stückliste zu ermöglichen, obwohl dies nicht erforderlich ist, da ein Parser wissen sollte, wie er das erste `erkennt Arjan vor 14 Jahren 0
Mein schlechtes, der Post wurde aktualisiert, um die falschen Informationen zu entfernen. Ich habe eine Erinnerung daran, dass ich Fehler in der Bombe bekomme. Ist es die Xhtml-Spezifikation, die dies möglicherweise nicht zulässt? Paxxi vor 14 Jahren 0
Vielleicht hatten Sie eine Stückliste in einem echten Unicode-String-Wert? Oder in einem Datenbankwert? Bei der Übertragung über HTTP mit Content-Type text / xml wird der (autorisierende) Zeichensatz per http://www.ietf.org/rfc/rfc2046 standardmäßig auf US-ASCII gesetzt. Daher sollte ein Prozessor dies ignorieren (oder sogar unterbinden; siehe.) http://www.ietf.org/rfc/rfc2376) eine Stückliste, wenn der Zeichensatz nicht angegeben ist. (Durch die Verwendung von application / xml anstelle von text / xml wird das Standard-US-ASCII-Format gelöst. Natürlich sollte man einfach den Zeichensatz angeben, mit dem begonnen werden soll.) Arjan vor 14 Jahren 0
0
Arjan

Vergessen Sie die Tatsache, dass es sich um XML handelt. Sie müssen den UTF-8 validieren. Vielleicht einfach in Firefox öffnen und nach dem Zeichen suchen? Ansonsten siehe UTF-8-Validierung bei Stack Overflow.

0
Alfonso Leon

Wenn Sie Tomcat verwenden, müssen Sie wahrscheinlich die Kodierung einrichten. Ich verwende Tomcat als Dienst in Windows und in den Konfigurationsoptionen hat der folgende Befehl den Trick für mich ausgeführt:

Dfile.encoding=UTF-8 

Ich hoffe es hilft.