Maison >développement back-end >Golang >Comment supprimer les caractères UTF-8 invalides des chaînes dans Go ?
Suppression des caractères UTF-8 non valides des chaînes dans Go
Lorsque vous essayez de rassembler une liste de chaînes à l'aide de json.Marshal, il est possible de rencontrez une erreur indiquant la présence de caractères UTF-8 non valides. Cet article aborde ce problème et propose des solutions pour supprimer ou remplacer ces caractères dans Go.
En Python, le module Unicode propose des méthodes telles que unicode.replace et unicode.strict pour gérer les caractères non valides. Cependant, Go n'a pas d'équivalents directs. Au lieu de cela, il repose sur une approche différente :
Utilisation de strings.ToValidUTF8 dans Go 1.13
Pour supprimer les caractères UTF-8 non valides d'une chaîne, vous pouvez utiliser les chaînes Fonction .ToValidUTF8 introduite dans Go 1.13. Il prend deux paramètres : la chaîne d'entrée et un caractère de remplacement à utiliser pour les octets invalides. Si le caractère de remplacement est une chaîne vide, les octets invalides seront supprimés silencieusement :
invalidString := "a\xc5z" validString := strings.ToValidUTF8(invalidString, "") // validString will now be "az"
Utilisation de strings.Map et utf8.RuneError dans Go 1.11
Une alternative La solution consiste à utiliser strings.Map avec utf8.RuneError. strings.Map applique une fonction à chaque rune dans une chaîne, tandis que utf8.RuneError représente un caractère UTF-8 non valide. Voici un exemple :
invalidString := "a\xc5z" fixUtf := func(r rune) rune { if r == utf8.RuneError { return -1 // Replace invalid characters with -1 } return r } validString := strings.Map(fixUtf, invalidString) fmt.Println(validString) // Output: "az"
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!