hello,
Voici un petit test pour comprendre ce qui se passe sur la lecture d'un fichier texte. Exemple de que j'obtiens pour la lecture d'un fichier texte utf8.txt qui contient des caractères encodés en utf-8 :
>>> open(r'D:\temp\utf8.txt')
<_io.TextIOWrapper name='D:\\temp\\utf8.txt' mode='r' encoding='cp1252'>
>>> open(r'D:\temp\utf8.txt',encoding='utf-8')
<_io.TextIOWrapper name='D:\\temp\\utf8.txt' mode='r' encoding='utf-8'>
Dans les fichiers texte en général il n'y a pas un en-tête qui dit quel type d'encodage texte est utilisé dans le fichier (sauf par exemple utf-8 avec BOM).
Open ne détecte pas le type d'encodage des fichiers texte, il prend l'encodage utilisé par défaut par l'O.S (cp1252 pour windows 10) quand on ne lui précise pas. La détection ne serait pas toujours facile à faire. Par exemple un fichier qui ne contient que des caractères ascii peut être cp1252 ou utf-8.
Si l'on connaît le type d'encodage utilisé par le fichier texte à lire Il faut mettre en paramètre du open, l'encodage utilisé dans le fichier. Exemple :
open(r'D:\temp\utf8.txt',encoding='utf-8')

Envoyé par
Sve@r
Pas du tout, c'est un standard. W10 (et peut-être W7) sont en utf8 par défaut.
Désolé Sve@r de te contredire mais l'encodage par défaut pour Windows 10 en version française c'est du cp1252.
Pour le vérifier il faut lancer dans une invite de commande Powershell :
[System.Text.Encoding]::Default
Et voilà ce que moi j'obtiens pour un Windows 10 Edition familiale :
IsSingleByte : True
BodyName : iso-8859-1
EncodingName : Europe de l'Ouest (Windows)
HeaderName : Windows-1252
WebName : Windows-1252
WindowsCodePage : 1252
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 1252
Ami calmant, J.P
Partager