Vous avez reçu du réseau, un flux d'octets incorrectement traités en caractères "latin1", alors qu'il s'agissait en fait de caractères "utf8".

Par exemple le caractère unicode 'à' devient 'Ã\xa0' lorsqu'il est mal décodé en latin1 parce qu'il devrait être en utf8.

Nous voulons donc avoir : repair_encoding('Ã\xa0') == "à"

Écrivez le contenu de la fonction repair_encoding() qui corrige cette erreur de décodage.

Afficher l'aide

Pensez aux méthodes decode et encode.

def repair_encoding(text):
    return text.encode('latin1').decode('utf8')
  1. .encode('latin1') convertit le texte mal décodé en bytes, comme s'il était vraiment en Latin1. Dans notre cas, il transforme 'Ã\xa0' en les bytes qui représentent réellement le caractère 'à' en UTF-8.

  2. .decode('utf8') lit ensuite ces bytes avec le bon encodage (UTF-8), ce qui nous donne finalement le caractère 'à' que nous voulions.

def repair_encoding(text):
    ...
def repair_encoding(text):
    return text.encode('latin1').decode('utf8')

Console

Un instant...
terminal

Résultats

/ 1 tests validés

repair_encoding('Ã\xa0') == "à"

assert repair_encoding('à') == "à", "epair_encoding('à') doit retourner à."

        

Bravo, tu as réussi cet exercice de code 🥳

💎

Envoyer ma solution

Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇

Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.

Ma solution :

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.