Die Suche nach 0x0B
Bekomme ich diesen Fehler beim Lesen von Daten aus einer SQL-Spalte, dann die Konvertierung in XML:
"- System.InvalidOperationException: Es ist ein Fehler in XML-Dokument (182, 16). ---> System.Xml.XmlException: '', hexidezimaler Wert 0x0B, ist ein ungültiges Zeichen."
Fair genug, vielleicht sind die Daten fehlerhaft ist. Außer, wie finde ich die Schuldige Zeile?
SELECT * from Mytable where Column like '%' + char(0x0B)+'%'
kehrt leer.
(natürlich habe ich versucht alle %+char , char, char+% Kombinationen, nur für den Fall)
InformationsquelleAutor Radu094 | 2009-11-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es endlich gefunden !
Den .NET-XML-serializer war entkommen, die ungültige Zeichen beim serialisieren, aber dann war es un-escaping es vor de-Serialisierung.
Also ich musste nach der entgangen  zu finden, die un-escaped 0x0B ... ernsthaft nicht lustig, Jungs!
Also diese:
Tatsächlich:
Und während dies sieht aus wie gültige XML wird es werfen ein ungültiges Zeichen " - Ausnahme, wenn :
Vielen Dank an Menschen, die sprang, um zu helfen! Es war unvaluable Hilfe!
so, wie hab Sie Deserialisieren der Charakter?
InformationsquelleAutor Radu094
Haben Sie versucht
nchar(0x0B)
stattchar(0x0B)
noch? Wie es klingt wie Ihr verdächtiges Zeichen ist Unicode.Welchen Datentyp ist die Spalte?
schuldig Spalte ist vom Datentyp nvarchar(MAX)
Frage mich, wenn es etwas zu tun mit der Sortierung. Haben Sie versucht, mit verschiedenen COLLATE-Klauseln?
Ich denke auch SORTIEREN könnte das problem sein, aber was mich verwirrt ist, dass die Abfrage finden Sie eine 0x0B Charakter so lange, wie es in den ersten ~100 Zeichen... sehr ungewöhnlich!
InformationsquelleAutor Wim Hollebrandse
Charakter
0x0B
kann nicht verwendet werden, in einem XML-Dokument (siehe die Liste der gültigen XML-Zeichen hier.) Bitte betrachten Sie die Migration ungültige XML-Zeichen wie diese gültigen XML-Code (z.B. die Sequenz
).InformationsquelleAutor fbrereto