Maison >développement back-end >Golang >Comment supprimer les caractères UTF-8 invalides d'une chaîne Go ?

Comment supprimer les caractères UTF-8 invalides d'une chaîne Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-09 21:42:11942parcourir

How Do I Remove Invalid UTF-8 Characters from a Go String?

Élimination des caractères UTF-8 non valides dans une chaîne dans Go

L'encodage/décodage des données à l'aide d'UTF-8 garantit la compatibilité entre différents systèmes et caractères ensembles. Cependant, des caractères UTF-8 non valides peuvent survenir en raison d'erreurs de transmission, d'attaques malveillantes ou d'autres facteurs. La suppression de ces caractères est essentielle à l'intégrité des données et au bon encodage JSON.

Solution :

Pour résoudre ce problème dans Go, plusieurs approches sont disponibles :

  1. Allez 1.13 :

    • Dans Go 1.13 et versions ultérieures, la fonction strings.ToValidUTF8 fournit une solution pratique. Il prend une chaîne et un caractère de remplacement comme arguments et renvoie une copie de la chaîne avec des caractères UTF-8 non valides remplacés par le caractère spécifié.
    • Exemple :

      fixedString := strings.ToValidUTF8("a\xc5z", "")
  2. Allez 1.11 :

    • Dans Go 1.11 et les versions ultérieures, vous pouvez utiliser la fonction strings.Map en conjonction avec utf8.RuneError pour supprimer les caractères UTF-8 non valides. La fonction strings.Map applique une fonction de mappage à chaque caractère d'une chaîne, et utf8.RuneError est une constante représentant une rune UTF-8 non valide.
    • Exemple :

      fixUtf := func(r rune) rune {
          if r == utf8.RuneError {
              return -1
          }
          return r
      }
      
      fixedString := strings.Map(fixUtf, "a\xc5z")

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