首頁 >後端開發 >Golang >為什麼我的 Golang JSON 解組失敗,並出現 Microsoft Translator API 中的「無效字元 \'ï\'\」?

為什麼我的 Golang JSON 解組失敗,並出現 Microsoft Translator API 中的「無效字元 \'ï\'\」?

Barbara Streisand
Barbara Streisand原創
2024-12-06 20:56:15431瀏覽

Why Does My Golang JSON Unmarshalling Fail with

從Microsoft Translator 解組JSON 時出現「無效字元'ï' 尋找值的開頭」錯誤

問題

發出Golang HTTP 請求時到微軟翻譯API (https://msdn.microsoft.com/en-us/library/dn876735.aspx),您在嘗試解群組JSON 回應時收到錯誤:

err = json.Unmarshal(body, &transTransform)
尋找無效字元「ï」值的開始

儘管JSON 數據在作為字符串打印時看起來有效,但響應數據與使用生成的數據之間的比較json.Marshal 揭示差異。

解決方案

伺服器回應包含帶有位元組順序標記 (BOM) 的 UTF-8 文字字串,該字串將文字標識為 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 資料結構。

以上是為什麼我的 Golang JSON 解組失敗,並出現 Microsoft Translator API 中的「無效字元 \'ï\'\」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn