Golang HTTP 요청 시 Microsoft 번역기 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 데이터로 성공적으로 역마샬링할 수 있습니다. 구조입니다.
위 내용은 Microsoft Translator API의 \'잘못된 문자 \'ï\'\'로 인해 내 Golang JSON 언마샬링이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!