Ecrire dans un fichier des caractères accentués

Fermé
Caud - 27 févr. 2014 à 14:30
nidhogg-59 Messages postés 102 Date d'inscription mercredi 20 juin 2012 Statut Membre Dernière intervention 5 décembre 2015 - 28 févr. 2014 à 23:36
Bonjour

dans le code suivant j'écris dans un fichier texte 2 chaines de caractères, l'une avec des voyelles accentuées l'autre sans.

Quand on ouvre le fichier on obtient:

! caractere accentue !
! caractère accentué !

Bien que le même format ait été utilisé, les deux chaines n'ont pas la même longueur.

D'où vient mon erreur

Merci



# -*-coding:utf-8 -*-

import os

mystr = "caractere accentue"
mystr_ac = "caractère accentué"

form_cel_str20='! %20s'

f = open('tst.txt', "w")

f.write( form_cel_str20 % mystr + ' !'+ '\n')
f.write( form_cel_str20 % mystr_ac + ' !' +'\n')
f.close()
A voir également:

3 réponses

Utilisateur anonyme
27 févr. 2014 à 14:42
Bonjour,

Ça fait très (très) longtemps que je n'ai pas touché au python, mais ne serait-ce pas un problème d'encodage?

Cdt,
Orinym.
0
Non puisque j'ai bien mis en codage en début de mon fichier.

ce qui n'apparait pas dans la copie de l'exemple c'est que quand j'imprime le fichier généré la deuxième ligne avec les caractères est plus courte que la première!
0
nidhogg-59 Messages postés 102 Date d'inscription mercredi 20 juin 2012 Statut Membre Dernière intervention 5 décembre 2015 27
28 févr. 2014 à 23:36
Je dirais que c'est parce que les caractères accentués sont codés sur deux caractères (leur position est supérieur à 128 dans la table ascii). Mais je ne suis pas tout à fait sur que c'est à cause de ça.
essaie de faire ça:
print "%20s"%"testé".decode("utf-8")
ça devrait aller mieux!
0