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

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

Barbara Streisand
發布: 2024-12-06 20:56:15
原創
374 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板