Heim >Backend-Entwicklung >Golang >Wie gehe ich mit nicht-UTF-8-kodiertem XML in Go um?

Wie gehe ich mit nicht-UTF-8-kodiertem XML in Go um?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 03:28:151042Durchsuche

How to Handle Non-UTF-8 Encoded XML in Go?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn