Maison >développement back-end >Golang >Pourquoi mon démarshalling Golang JSON échoue-t-il avec \'Caractère invalide \'ï\'\' de l'API Microsoft Translator ?

Pourquoi mon démarshalling Golang JSON échoue-t-il avec \'Caractère invalide \'ï\'\' de l'API Microsoft Translator ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-06 20:56:15436parcourir

Why Does My Golang JSON Unmarshalling Fail with

Erreur "Caractère 'ï' non valide à la recherche du début de la valeur" lors de la désorganisation de JSON à partir de Microsoft Translator

Problème

Lors d'une requête HTTP Golang à l'API Microsoft Translator (https://msdn.microsoft.com/en-us/library/dn876735.aspx), vous recevez une erreur lorsque vous tentez de désorganiser la réponse JSON :

err = json.Unmarshal(body, &transTransform)
caractère non valide 'ï' recherchant début de la valeur

Bien que les données JSON semblent valides lorsqu'elles sont imprimées sous forme de chaîne, les comparaisons entre les données de réponse et les données générées à l'aide json.Marshal révèle des écarts.

Solution

La réponse du serveur contient une chaîne de texte UTF-8 avec une marque d'ordre d'octet (BOM), qui identifie le texte comme étant codé en UTF-8. Cependant, cette nomenclature doit être supprimée avant le décodage. Pour cela, utilisez la ligne suivante :

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

Cause

Le caractère ï, qui apparaît dans le message d'erreur, résulte de l'interprétation de la nomenclature UTF-8 comme une nomenclature ISO-8859- 1 chaîne.

En supprimant la nomenclature, les données JSON peuvent être désorganisées avec succès dans les données TransformTextResponse. structure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn