Heim > Backend-Entwicklung > Golang > Wie gehe ich am besten mit rohem Unicode in HTTP-Antwortkörpern um?

Wie gehe ich am besten mit rohem Unicode in HTTP-Antwortkörpern um?

Mary-Kate Olsen
Freigeben: 2024-12-03 14:18:15
Original
346 Leute haben es durchsucht

How to Best Handle Raw Unicode in HTTP Response Bodies?

So gehen Sie mit unformatierten Unicode-Inhalten in Antwortkörpern um

Beim Abrufen von Daten aus Web-APIs mithilfe der Net/http-Bibliothek kann es zu Problemen kommen Inhalte, die als roher Unicode kodiert sind. Dies wird als ASCII-Zeichen im Antworttext angezeigt. Um den darin verborgenen eigentlichen Inhalt zu entschlüsseln, müssen Sie die Unicode-Sequenzen dekodieren.

Ein Ansatz besteht darin, die bufio.ScanRunes-Funktionalität zu nutzen, um die einzelnen Unicode-Codepunkte zu durchlaufen. In einigen Fällen könnte dieser Ansatz jedoch fehlschlagen. Eine zuverlässigere Methode besteht darin, Tools wie das JSON-Paket zu verwenden, um den Antworttext in ein strukturiertes Objekt zu entpacken. Dieser Prozess übernimmt automatisch die Unicode-Dekodierung, sodass Sie saubere und leicht verwendbare Daten erhalten.

Sie können beispielsweise das folgende Snippet verwenden, um JSON-Daten mit maskierten Unicode-Zeichen zu entmarshalieren:

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"}]}}`
Nach dem Login kopieren

Ausgabe :

<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
Nach dem Login kopieren

Alternativ können Sie zum Dekodieren einer bestimmten Unicode-Sequenz ohne Verwendung einer Drittanbieterbibliothek diese verwenden die Funktion strconv.Unquote():

fmt.Println(strconv.Unquote(`"\u7d20\u672a\u8c0b"`))
Nach dem Login kopieren

Ausgabe:

素未谋面 <nil>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich am besten mit rohem Unicode in HTTP-Antwortkörpern um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage