Golang HTTP リクエストの作成時Microsoft Translator API へ(https://msdn.microsoft.com/en-us/library/dn876735.aspx)、JSON 応答をアンマーシャリングしようとすると、次のエラーが表示されます:
err = json.Unmarshal(body, &transTransform)
無効な文字 'ï' が検索されています値の始まり
文字列として出力すると JSON データが有効に見えるにもかかわらず、応答データと、次を使用して生成されたデータとの比較が行われます。 json.Marshal は不一致を明らかにします。
サーバー応答には、UTF-8 でエンコードされたテキストであることを識別するバイト オーダー マーク (BOM) を含む UTF-8 テキスト文字列が含まれています。ただし、この BOM はデコードする前に削除する必要があります。これを行うには、次の行を使用します。
body = bytes.TrimPrefix(body, []byte("\xef\xbb\xbf")) // Or []byte{239, 187, 191}
エラー メッセージに表示される文字 ï は、UTF-8 BOM を ISO-8859- として解釈した結果です。 1 つの文字列。
BOM を削除すると、JSON データを TransformTextResponse データに正常にアンマーシャリングできます。構造。
以上がMicrosoft Translator API からの「無効な文字 \'ï\'\」により、Golang JSON のアンマーシャリングが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。