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.
Pensez aux méthodes decode et encode.
def repair_encoding(text):
return text.encode('latin1').decode('utf8')
-
.
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. -
.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...
Résultats
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é 👇
Ma solution :



