Die überprüften Informationen müssen als XML-Datei generiert werden und das XML muss in GB2312 codiert sein, da viele der gesammelten Nachrichten-Websites UTF8-Codierung verwenden, was während des Konvertierungsprozesses zu verstümmelten Zeichen führt
I Ich habe kürzlich an einem kleinen Projekt gearbeitet und als ich auf solche Probleme stieß, habe ich sie als Zusammenfassung aufgezeichnet.
Dieses Projekt ist in zwei Teile gegliedert: Der eine ist die Sammlung von Nachrichtendaten, der andere die Überprüfung der gesammelten Informationen und schließlich wird die XML-Datei generiert.
Nachdem die erfassten Daten vom Benutzer bearbeitet wurden, muss eine ACCESS-Datei exportiert und anschließend in das Informationsüberprüfungssystem importiert werden. Der Feldtyp zum Speichern von Nachrichteninformationen in der ACCESS-Bibliothek ist der Typ ntext, während das entsprechende Feld in der Audit-Systembibliothek ein Feld vom Typ varchar (max) ist. Nach dem Import wurde festgestellt, dass einige Leerzeichen verstümmelt und als Frage angezeigt werden Tatsächlich stellt sich nach weiteren Tests heraus, dass es sich hierbei nicht um ein Leerzeichen handelt, sondern um ein Sonderzeichen. Nach mehreren Tests wurde festgestellt, dass der Typ varchar(max) in den Typ nvarchar(max) geändert werden sollte, damit die importierten Daten keine derartigen Probleme mehr aufweisen.
Beim anschließenden Testvorgang wurde jedoch festgestellt, dass die Informationen in der Datenbank nach der Änderung der importierten gesammelten Informationen (über die Bearbeitungsfunktion des .net-Programms) erneut verstümmelt waren Die Anweisung wurde so geschrieben. Diese Art von Problem wird nicht auftreten, z. B. das Einfügen von Werten (N'"+aktualisierter Wert+"") in Tabellennamen (Nachrichten). Warum N hinzufügen? Gehen Sie zu Baidu und Sie werden es verstehen.
An diesem Punkt hatte ich endlich etwas Erleichterung, aber die folgenden Probleme machten mich deprimiert...
Die überprüften Informationen müssen im XML-Format generiert werden, da viele Nachrichten-Websites gesammelt werden. Die Website verwendet UTF8-Kodierung , daher erscheinen während des Konvertierungsvorgangs verstümmelte Zeichen (immer noch verursacht durch das „leere“ Sonderzeichen). Laut der Online-Einführung reicht die Konvertierung von UTF8 in GB2312 aus, aber in der Praxis kann das Problem immer noch nicht gelöst werden Ich habe den ganzen Morgen daran gearbeitet, dieses Problem zu lösen, aber am Ende gab es keine Möglichkeit. Als ich deprimiert war, dachte ich plötzlich daran, die Debugging-Funktion von VS zu verwenden, um herauszufinden, was dieses Sonderzeichen ist, und las es schließlich Nachdem content.ToCharArray(); den Wert dieses Felds in der Datenbank entnommen und dann in ein Zeichenarray umgewandelt hatte, stellte er fest, dass das Zeichen, das den verstümmelten Code verursachte, „“ war Zum Leerzeichen in den Anführungszeichen ist es kein Leerzeichen, sondern ein Leerzeichen, das in GB2312 nicht erkannt werden kann. Kann ich den Wert dieses Zeichens sofort durch ein Leerzeichen ersetzen? , das Problem mit dem verstümmelten Code wurde gelöst.
Hinweis: Sie müssen den debuggten Wert verwenden (da dies das eigentliche Sonderzeichen ist, das verstümmelte Zeichen verursacht). >
Das obige ist der detaillierte Inhalt von[XML] Lösung für verstümmelte Zeichen bei der Konvertierung der UTF8- und GB2312-Kodierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!