Problème d'encodage automatique de texte
Résolu/Fermé
Nico_63
Messages postés
41
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
Dernière intervention
27 mai 2023
-
9 mai 2021 à 21:53
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 - 10 mai 2021 à 12:23
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 - 10 mai 2021 à 12:23
A voir également:
- Problème d'encodage automatique de texte
- Message automatique thunderbird - Guide
- Réponse automatique outlook - Guide
- Sommaire automatique word - Guide
- Excel cellule couleur si condition texte - Guide
- Mettre un texte en majuscule - Guide
4 réponses
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
9 mai 2021 à 22:31
9 mai 2021 à 22:31
bonjour,
peut-être peux-tu expliquer ce que tu penses avoir compris, en utilisant un programme plus simple?
peut-être peux-tu expliquer ce que tu penses avoir compris, en utilisant un programme plus simple?
Nico_63
Messages postés
41
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
Dernière intervention
27 mai 2023
10 mai 2021 à 03:05
10 mai 2021 à 03:05
Bonjour.
Je ne peux pas simplifier le programme mais je peux préciser ma pensée.
texte_2 est normalement la suite d’octets qui correspond à l’encodage de chaine en suivant la norme Utf-8.
Il devrait normalement en être de même pour texte_1 grâce à la première ligne du script et via l’enregistrement de chaine dans un fichier texte que j’ouvre ensuite en mode lecture binaire.
Mais texte_1 et texte_2 ne renvoient pas la même chose...
Je ne peux pas simplifier le programme mais je peux préciser ma pensée.
texte_2 est normalement la suite d’octets qui correspond à l’encodage de chaine en suivant la norme Utf-8.
Il devrait normalement en être de même pour texte_1 grâce à la première ligne du script et via l’enregistrement de chaine dans un fichier texte que j’ouvre ensuite en mode lecture binaire.
Mais texte_1 et texte_2 ne renvoient pas la même chose...
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
10 mai 2021 à 10:59
10 mai 2021 à 10:59
quelle version de python utilises-tu?
qu'essaies-tu de réaliser?
ou bien veux-tu uniquement comprendre pourquoi ton programme se comporte ainsi?
qu'essaies-tu de réaliser?
ou bien veux-tu uniquement comprendre pourquoi ton programme se comporte ainsi?
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
10 mai 2021 à 11:21
10 mai 2021 à 11:21
en réalité, tu supposes que le fichier est encodé en utf-8.
et tu découvres que cette supposition est non fondée.
et tu découvres que cette supposition est non fondée.
Nico_63
Messages postés
41
Date d'inscription
dimanche 3 novembre 2013
Statut
Membre
Dernière intervention
27 mai 2023
10 mai 2021 à 12:12
10 mai 2021 à 12:12
En fait l'encodage en Utf-8 est celui du script lui même.
Mais l'encodage du texte enregistré se fait toujours avec la norme par défaut. Je viens de trouver la solution à mon problème en fouillant la doc de Python. Pour encoder en plus le fichier enregistré en suivant la norme Utf-8, le bon script est celui ci-dessous...
Et là texte_1 et texte_2 sont bien identiques...
# -*- coding:Utf-8 -*-
# vérification avec le script ci-dessous #
chaine = 'Ceci doit être un test efficace : &é"èçà@$£§%öµ'
obj = open('test_1.txt','w',encoding = 'Utf-8')
obj.write(chaine)
obj.close()
obj = open('test_1.txt','rb')
texte_1 = obj.read()
obj.close()
print(type(texte_1))
print(texte_1)
texte_2 = chaine.encode('Utf-8')
print(type(texte_2))
print(texte_2)
Mais l'encodage du texte enregistré se fait toujours avec la norme par défaut. Je viens de trouver la solution à mon problème en fouillant la doc de Python. Pour encoder en plus le fichier enregistré en suivant la norme Utf-8, le bon script est celui ci-dessous...
Et là texte_1 et texte_2 sont bien identiques...
# -*- coding:Utf-8 -*-
# vérification avec le script ci-dessous #
chaine = 'Ceci doit être un test efficace : &é"èçà@$£§%öµ'
obj = open('test_1.txt','w',encoding = 'Utf-8')
obj.write(chaine)
obj.close()
obj = open('test_1.txt','rb')
texte_1 = obj.read()
obj.close()
print(type(texte_1))
print(texte_1)
texte_2 = chaine.encode('Utf-8')
print(type(texte_2))
print(texte_2)
yg_be
Messages postés
22707
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 avril 2024
1 471
10 mai 2021 à 12:23
10 mai 2021 à 12:23
en effet, ou ainsi:
obj = open('test_1.txt','wb') obj.write(chaine.encode('Utf-8'))