Heim > Backend-Entwicklung > Golang > Warum schlägt das Unmarshalling meines Golang-JSON mit „Ungültiges Zeichen \'ï\'\' aus der Microsoft Translator API fehl?

Warum schlägt das Unmarshalling meines Golang-JSON mit „Ungültiges Zeichen \'ï\'\' aus der Microsoft Translator API fehl?

Barbara Streisand
Freigeben: 2024-12-06 20:56:15
Original
373 Leute haben es durchsucht

Why Does My Golang JSON Unmarshalling Fail with

Fehler „Ungültiges Zeichen 'ï' sucht nach Wertanfang“ beim Unmarshalling von JSON aus Microsoft Translator

Problem

Beim Stellen einer Golang-HTTP-Anfrage zur Microsoft Translator-API (https://msdn.microsoft.com/en-us/library/dn876735.aspx) erhalten Sie eine Fehlermeldung, wenn Sie versuchen, die JSON-Antwort zu entmarshalieren:

err = json.Unmarshal(body, &transTransform)
Nach dem Login kopieren
ungültiges Zeichen „ï“ gesucht Anfang des Werts

Obwohl die JSON-Daten gültig erscheinen, wenn sie als Zeichenfolge gedruckt werden, sind Vergleiche zwischen den Antwortdaten und den mit generierten Daten möglich json.Marshal deckt Unstimmigkeiten auf.

Lösung

Die Serverantwort enthält eine UTF-8-Textzeichenfolge mit einer Byte Order Mark (BOM), die den Text als UTF-8-codiert identifiziert. Diese Stückliste muss jedoch vor der Dekodierung entfernt werden. Verwenden Sie dazu die folgende Zeile:

body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
Nach dem Login kopieren

Ursache

Das Zeichen ï, das in der Fehlermeldung erscheint, resultiert aus der Interpretation der UTF-8-Stückliste als ISO-8859- 1 Zeichenfolge.

Durch Entfernen des BOM können die JSON-Daten erfolgreich in die TransformTextResponse-Daten entmarshallt werden Struktur.

Das obige ist der detaillierte Inhalt vonWarum schlägt das Unmarshalling meines Golang-JSON mit „Ungültiges Zeichen \'ï\'\' aus der Microsoft Translator API fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage