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
Barbara StreisandOriginal
2024-12-06 20:56:15431Durchsuche

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)
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}

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!

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