>백엔드 개발 >Golang >HTTP 응답 본문에서 원시 유니코드를 가장 잘 처리하는 방법은 무엇입니까?

HTTP 응답 본문에서 원시 유니코드를 가장 잘 처리하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-03 14:18:15352검색

How to Best Handle Raw Unicode in HTTP Response Bodies?

응답 본문에서 원시 유니코드 콘텐츠를 처리하는 방법

net/http 라이브러리를 사용하여 웹 API에서 데이터를 검색할 때 다음과 같은 문제가 발생할 수 있습니다. 원시 유니코드로 인코딩된 콘텐츠. 이는 응답 본문에 ASCII 문자로 나타납니다. 숨겨진 실제 콘텐츠를 해독하려면 유니코드 시퀀스를 디코딩해야 합니다.

한 가지 접근 방식은 bufio.ScanRunes 기능을 활용하여 개별 유니코드 코드 포인트를 반복하는 것입니다. 그러나 어떤 경우에는 이 접근 방식이 부족할 수 있습니다. 보다 안정적인 방법은 json 패키지와 같은 도구를 사용하여 응답 본문을 구조화된 객체로 역마샬링하는 것입니다. 이 프로세스는 유니코드 디코딩을 자동으로 처리하여 깨끗하고 쉽게 사용할 수 있는 데이터를 제공합니다.

예를 들어 다음 스니펫을 사용하여 이스케이프된 유니코드 문자가 포함된 JSON 데이터를 비정렬화할 수 있습니다.

func main() {
    var i interface{}
    err := json.Unmarshal([]byte(src), &i)
    fmt.Println(err, i)
}

const src = `{"forum":{"id":"3251718","name":"\u5408\u80a5\u5de5\u4e1a\u5927\u5b66\u5ba3\u57ce\u6821\u533a","first_class":"\u9ad8\u7b49\u9662\u6821","second_class":"\u5b89\u5fbd\u9662\u6821","is_like":"0","user_level":"1","level_id":"1","level_name":"\u7d20\u672a\u8c0b\u9762","cur_score":"0","levelup_score":"5","member_num":"80329","is_exists":"1","thread_num":"108762","post_num":"3445881","good_classify":[{"class_id":"0","class_name":"\u5168\u90e8"},{"class_id":"1","class_name":"\u516c\u544a\u7c7b"},{"class_id":"2","class_name":"\u5427\u53cb\u4e13\u533a"},{"class_id":"4","class_name":"\u6d3b\u52a8\u4e13\u533a"},{"class_id":"6","class_name":"\u793e\u56e2\u73ed\u7ea7"},{"class_id":"5","class_name":"\u8d44\u6e90\u5171\u4eab"},{"class_id":"8","class_name":"\u6e29\u99a8\u751f\u6d3b\u7c7b"},{"class_id":"7","class_name":"\u54a8\u8be2\u65b0\u95fb\u7c7b"},{"class_id":"3","class_name":"\u98ce\u91c7\u5c55\u793a\u533a"}]}}`

출력 :

<nil> map[forum:map[levelup_score:5 is_exists:1 post_num:3445881 good_classify:[map[class_id:0 class_name:全部] map[class_id:1 class_name:公告类] map[class_id:2 class_name:吧友专区] map[class_id:4 class_name:活动专区] map[class_id:6 class_name:社团班级] map[class_id:5 class_name:资源共享] map[class_id:8 class_name:温馨生活类] map[class_name:咨询新闻类 class_id:7] map[class_id:3 class_name:风采展示区]] id:3251718 is_like:0 cur_score:0

또는 타사 라이브러리를 사용하지 않고 특정 유니코드 시퀀스를 디코딩하려면, strconv.Unquote() 함수를 사용할 수 있습니다:

fmt.Println(strconv.Unquote(`"\u7d20\u672a\u8c0b"`))

출력:

素未谋面 <nil>

위 내용은 HTTP 응답 본문에서 원시 유니코드를 가장 잘 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.