Verarbeitung von Nicht-UTF-8-XML-Eingaben in Go
Beim Versuch, eine XML-Eingabe mithilfe der Unmarshal-Funktion im XML-Paket von Go zu entmarshalieren, Es kann zu Problemen kommen, wenn die Eingabe nicht in UTF-8 kodiert ist. Um dieses Problem zu beheben, ist ein CharsetReader erforderlich.
Wo man einen CharsetReader findet
Glücklicherweise bietet das net/html-Paket von Go eine Lösung in Form von charset.NewReaderLabel. Dieser Reader kann die Konvertierung von nicht UTF-8-codierten Eingaben in UTF-8 verarbeiten.
Aktualisierte Lösung für 2015 und darüber hinaus
In früheren Versionen von Go, a Es musste ein benutzerdefinierter CharsetReader implementiert werden. Neuere Versionen von Go bieten jedoch eine einfachere Lösung mit charset.NewReaderLabel. Hier ist ein aktualisierter Codeausschnitt:
import ( "encoding/xml" "bytes" "golang.org/x/net/html/charset" ) // ... reader := bytes.NewReader(theXml) decoder := xml.NewDecoder(reader) decoder.CharsetReader = charset.NewReaderLabel err = decoder.Decode(&parsed)
Durch die Verwendung von charset.NewReaderLabel als CharsetReader kann die Unmarshal-Funktion jetzt nicht-UTF-8-codierte XML-Eingaben ohne manuelle Konvertierung oder benutzerdefinierte Implementierungen erfolgreich verarbeiten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht-UTF-8-kodiertem XML in Go um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!