Maison >développement back-end >Golang >Comment gérer au mieux l'Unicode brut dans les corps de réponse HTTP ?

Comment gérer au mieux l'Unicode brut dans les corps de réponse HTTP ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-03 14:18:15352parcourir

How to Best Handle Raw Unicode in HTTP Response Bodies?

Comment gérer le contenu brut Unicode dans les corps de réponse

Lors de la récupération de données à partir d'API Web à l'aide de la bibliothèque net/http, il est possible de rencontrer contenu codé en Unicode brut. Cela se manifeste sous forme de caractères ASCII dans le corps de la réponse. Pour déchiffrer le contenu réel caché à l'intérieur, vous devez décoder les séquences Unicode.

Une approche consiste à utiliser la fonctionnalité bufio.ScanRunes pour parcourir les points de code Unicode individuels. Cependant, dans certains cas, cette approche peut échouer. Une méthode plus fiable consiste à utiliser des outils tels que le package json pour transformer le corps de la réponse en un objet structuré. Ce processus gère automatiquement le décodage Unicode, vous laissant des données propres et facilement utilisables.

Par exemple, vous pouvez utiliser l'extrait suivant pour désassembler les données JSON contenant des caractères Unicode échappés :

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"}]}}`

Sortie :

<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

Alternativement, pour décoder une séquence Unicode spécifique sans utiliser de bibliothèque tierce, vous pouvez utiliser la fonction strconv.Unquote() :

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

Sortie :

素未谋面 <nil>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn