J'utilise le sélénium pour insérer du texte avec des trémas allemands dans un formulaire Web. Le codage déclaré pour le script python est utf-8. La page utilise l'encodage utf-8. Quand je definine une chaîne comme que tout fonctionne bien:Encodage Python unicode utf-8
q = u"Hällö" #type(q) returns unicode
...
textbox.send_keys(q)
Mais quand j'essaie de lire à partir d'un fichier de configuration en utilisant ConfigParser (ou un autre type de fichier) je reçois sortie malformé dans le webformular (Hällö
). C'est le code que j'utilise pour cela:
the_encoding = chardet.detect(q)['encoding'] #prints utf-8
q = parser.get('info', 'query') # type(q) returns str
q = q.decode('unicode-escape') # type(q) returns unicode
textbox.send_keys(q)
Quelle est la différence entre les deux q donnés à la fonction send_keys?
Essayez 'q.decode ('latin-1')' à la place. –
Obtenir la même sortie malformée – Robin
Ceci est un exemple classique de mojibake. Si vous faites ceci dans un terminal UTF-8 (en Python 2 ou 3): 'print (u" Hällö ".encode ('utf8'). Decode ('latin1'))', vous obtiendrez 'Hällà ¶'. Inversement, 'print (u'Hällö.encode ('latin1'). Decode ('utf8'))' imprime 'Hällö'. –