Nous sommes en python 2.4. Voici ma situation. Je tire une chaîne de caractères d'une base de données, et elle contient un 'o' tréma ( \xf6 ). À ce stade, si j'exécute type(value), il renvoie str. Je tente ensuite d'exécuter .decode('utf-8'), et j'obtiens une erreur ('utf8' codec can't decode bytes in position 1-4).
Mon objectif ici est de réussir à faire en sorte que type(value) renvoie de l'unicode. J'ai trouvé un question précédente qui contenait des informations utiles, mais l'exemple de la réponse choisie ne semble pas fonctionner pour moi. Y a-t-il quelque chose que je fais mal ici ?
Voici un code à reproduire :
Name = 'w\xc3\xb6rner'.decode('utf-8')
file.write('Name: %s - %s\n' %(Name, type(Name)))
Je n'arrive jamais à l'instruction write, car elle échoue dès la première instruction.
Merci pour votre aide.
Edit :
J'ai vérifié que le jeu de caractères de la base de données est utf8. Dans mon code de reproduction, j'ai donc changé ' \xf6 à \xc3\xb6 ', et l'échec se produit toujours. Y a-t-il une différence entre 'utf-8' et 'utf8' ?
Le conseil sur l'utilisation des codecs pour écrire dans un fichier est pratique (je l'utiliserai certainement), mais dans ce scénario, j'écris uniquement dans un fichier journal à des fins de débogage.