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
Libérer: 2024-12-03 14:18:15
original
346 Les gens l'ont consulté

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"}]}}`
Copier après la connexion

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
Copier après la connexion

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"`))
Copier après la connexion

Sortie :

素未谋面 <nil>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal