ホームページ > バックエンド開発 > Golang > Microsoft Translator API からの「無効な文字 \'ï\'\」により、Golang JSON のアンマーシャリングが失敗するのはなぜですか?

Microsoft Translator API からの「無効な文字 \'ï\'\」により、Golang JSON のアンマーシャリングが失敗するのはなぜですか?

Barbara Streisand
リリース: 2024-12-06 20:56:15
オリジナル
373 人が閲覧しました

Why Does My Golang JSON Unmarshalling Fail with

Microsoft Translator から JSON をアンマーシャリングする際のエラー「値の始まりを探している無効な文字 'ï'」

問題

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}
ログイン後にコピー

Cause

エラー メッセージに表示される文字 ï は、UTF-8 BOM を ISO-8859- として解釈した結果です。 1 つの文字列。

BOM を削除すると、JSON データを TransformTextResponse データに正常にアンマーシャリングできます。構造。

以上がMicrosoft Translator API からの「無効な文字 \'ï\'\」により、Golang JSON のアンマーシャリングが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート