IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Encodage des fichiers [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 150
    Points : 94
    Points
    94
    Par défaut Encodage des fichiers
    Bonjour à tous,

    Dans les exercices du "Swinnen", l'auteur indique que pour un fichier dont l'encodage ne correspond pas à celui utilisé par défaut, il faut obligatoirement le préciser à l'ouverture du fichier.
    J'arrive à ouvrir sans soucis des fichiers encodés différemment sans préciser l'encodage, j'ai l'impression que "Python 3.X" est capable de le détecter automatiquement.

    Pourriez vous me le confirmer.
    Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Il me semble que python va tenter de le déterminer si tu ne précises rien.
    Mais cela peut entraîner des problèmes si le fichier contient des caractères spéciaux ou utilise un encodage différent de celui attendu.
    C'est pourquoi, il est recommandé de spécifier explicitement l'encodage avec l'argument encoding pour assurer une manipulation correcte des données du fichier.

  3. #3
    Membre régulier Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 150
    Points : 94
    Points
    94
    Par défaut
    Je précise systématiquement l'encodage à utiliser, car j'ai constaté que cette façon de faire était largement répandue.
    J'ai posé cette question car n'arrivant pas à reproduire le message d'erreur attendu, je voulais être sûr d'avoir bien compris l'exercice.

    Merci pour ta réponse. 👍
    Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par scalpel Voir le message
    J'arrive à ouvrir sans soucis des fichiers encodés différemment sans préciser l'encodage
    Comment sais-tu qu'ils sont encodés différemment ? Pour info l'encodage ascii standard est englobé dans l'utf-8. Quoi qu'il en soit, préciser systématiquement l'encodage à l'ouverture est une pratique plus que conseillée (si ouverture en mode "texte" évidemment)

    Citation Envoyé par scalpel Voir le message
    j'ai l'impression que "Python 3.X" est capable de le détecter automatiquement.
    Ca je ne sais pas. J'aurais plutôt l'impression qu'il ouvre en utf-8 si non précisé (ça me semble logique, détecter un truc automatiquement prend du temps et le résultat n'est pas garanti donc le faire systématiquement... )

    Pour info tu as la librairie chardet qui peut "estimer" l'encoding et qui te donne un résultat avec sa probabilité
    Code python3 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import chardet
    with open(fichier, "rb") as fp: print(chardet.detect(fp.read()))
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par scalpel Voir le message
    J'arrive à ouvrir sans soucis des fichiers encodés différemment sans préciser l'encodage, j'ai l'impression que "Python 3.X" est capable de le détecter automatiquement.
    Si python essayait de... ce serait documenté et le Swinnen n'aurait pas de raison d'affirmer que ce n'est pas le cas (sauf nouvelle fonctionnalité que la version de Python du Swinnen n'a pas vue).

    "ouvrir" un fichier (via open) ne pose aucun problème.

    C'est à la lecture que python va décoder les bytes pour en faire de l'unicode... et que ça pourra planter. Mais souvent ça ne pose soucis qu'à l'affichage: on ne voit pas le caractère attendu.

    Méfiez vous de vos impressions: testez! Essayez de comprendre ce qui a été testé... et quand vous pensez avoir reproduit un soucis, partagez le code qui permettrait de conforter vos impressions.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    @scalpel, ton livre n'est pas une bible, il faut donc te documenter sur "les technologies" exemple

    Il me semble que
    C'est pourtant simple de faire des mini tests ! c'est une chose que nous faisons très souvent (découverte techno, librairie)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    with open("test.utf.txt", "wt", encoding="utf-8") as file_:
        file_.write("""
            un été qui m'a couté 500 € ...
            et c'était 💩
            """
        )
     
    with open("test.iso.txt", "wt", encoding="iso8859-1") as file_:
        file_.write("""
            un été qui m'a couté 500  ...
            et c'était 
            """
        )
     
    try:
        with open("test.win.txt", "wt", encoding="windows-1252") as file_:
            file_.write("""
                un été qui m'a couté 500 € ...
                et c'était (emojy ne passe pas!)
                """
            )
    except UnicodeEncodeError as err:
            print("Erreur", err)
            print()
    vérif linux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ file test.utf.txt
    test.utf.txt: Unicode text, UTF-8 text
    $ file test.win.txt
    test.win.txt: Non-ISO extended-ASCII text
    $ file test.iso.txt 
    test.iso.txt: ISO-8859 text
    Après on va lire avec python les 2 fichiers pour voir, avec et sans encodage explicite

    résultat lecture sans encodage explicite sous linux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # lire test.win.txt None
    Erreur ? 'utf-8' codec can't decode byte 0xe9 in position 16: invalid continuation byte
     
    # lire test.iso.txt None
    Erreur ? 'utf-8' codec can't decode byte 0xe9 in position 12: invalid continuation byte
    ce qui rejoint bien la doc sur open()
    In text mode, if encoding is not specified the encoding used is platform
    En mode texte, si encoding n'est pas spécifié, l'encodage utilisé dépend de la plate-forme : locale.getencoding() est appelée pour obtenir l'encodage courant défini
    locale.getencoding()
    Get the current locale encoding:
    - On Android and VxWorks, return "utf-8".
    - On Unix, return the encoding of the current LC_CTYPE locale. Return "utf-8" if nl_langinfo(CODESET) returns an empty string: for example, if the current LC_CTYPE locale is not supported.
    - On Windows, return the ANSI code page.

    --------
    autre mini test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # lire test.utf.txt en iso-8859-1 et afficher:
            un été qui m'a couté 500 ⬠...
            et c'était ð⏎
    Méfiez vous de vos impressions: testez!
    +100
    @scalpel, faire des mini-tests, cela te permet de bien comprendre (un petit point) et en plus cela te donne des "exercices" gratuits
    $moi= ( !== ) ? : ;

  7. #7
    Membre régulier Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 150
    Points : 94
    Points
    94
    Par défaut
    Plein de réponses, Merci à tous.

    Je vais essayer de répondre globalement, pour mieux expliquer ce qui ma poussé à poser cette question :

    1 - J'encode un fichier en "Latin-1" et je le réouvre sans précision sur l'encodage utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    chaine ="Amélie et Eugène\n"
    of =open("test.txt", "w", encoding ="Latin-1")
    of.write(chaine)
    17
    of.close()
    of =open("test.txt", "r")
    octets =of.read()
    of.close()
    print(octets)
    Amelie et Eugène
    Mise à part que

    2 - J'encode un fichier en "Utf-8" et je le réouvre sans précision sur l'encodage utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    chaine ="Amélie et Eugène\n"
    of =open("test.txt", "w", encoding ="Utf-8")
    of.write(chaine)
    17
    of.close()
    of =open("test.txt", "r")
    octets =of.read()
    of.close()
    print(octets)
    Amélie et Eugène
    Je constate bien une différence à la lecture, mais l'auteur montre en exemple que dans un des deux cas je ne devrait pas pouvoir ouvrir le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    of =open("test.txt", "r")
    ch_lue =of.read()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python3.1/codecs.py", line 300, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf8' codec can't decode bytes in position 2-4:
    invalid data
    Je n'ai aucun message d'erreur , j'ai certainement loupé quelque chose.


    Je précise systématiquement l'encodage à utiliser, car j'ai constaté que cette façon de faire était largement répandue.
    J'ai posé cette question car n'arrivant pas à reproduire le message d'erreur attendu, je voulais être sûr d'avoir bien compris l'exercice.
    Débutant en janvier 2024 l'apprentissage d'un langage de programmation et n'étant pas particulièrement doué, soyez indulgents.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par scalpel Voir le message
    1 - J'encode un fichier en "Latin-1" et je le réouvre sans précision sur l'encodage utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    chaine ="Amélie et Eugène\n"
    of =open("test.txt", "w", encoding ="Latin-1")
    of.write(chaine)
    17
    of.close()
    of =open("test.txt", "r")
    octets =of.read()
    of.close()
    print(octets)
    Amelie et Eugène
    Pour un test permettant de voir ce qui se passe c'est bien, en pratique c'est mal. Tu dois préciser l'encoding à l'ouverture. Chez-moi, ce code provoque une erreur

    Citation Envoyé par scalpel Voir le message
    2 - J'encode un fichier en "Utf-8" et je le réouvre sans précision sur l'encodage utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    chaine ="Amélie et Eugène\n"
    of =open("test.txt", "w", encoding ="Utf-8")
    of.write(chaine)
    17
    of.close()
    of =open("test.txt", "r")
    octets =of.read()
    of.close()
    print(octets)
    Amélie et Eugène
    Chez-moi ce code fonctionne parfaitement et affiche le texte exact. Précision: je suis sous Linux avec Python3 (dans lequel l'encoding est utf-8 par défaut). Malgré ce "utf-8 par défaut" ça reste une mauvaise pratique (explicite est mieux qu'implicite)

    Citation Envoyé par scalpel Voir le message
    Je constate bien une différence à la lecture, mais l'auteur montre en exemple que dans un des deux cas je ne devrait pas pouvoir ouvrir le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    of =open("test.txt", "r")
    ch_lue =of.read()
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python3.1/codecs.py", line 300, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf8' codec can't decode bytes in position 2-4:
    invalid data
    C'est exactement ce que j'ai. Vouloir lire un fichier encodé X comme s'il était encodé Y c'est tenter de lire du canadien dans comme si c'était du français métropolitain. Souvent ça marche, mais quelques détails peuvent différer (exemple le mot "gosse" signifiant "enfant" dans notre argot courant signifie "testicule" au Canada) et parfois ne pas fonctionner. Un encoding c'est juste une table de traduction "suite de bits vers caractère" et si la suite de bits lue n'a pas de traduction correspondante => DecodeError

    Citation Envoyé par scalpel Voir le message
    Je n'ai aucun message d'erreur.
    Peut-être la faute à Python version Windows ??? Je testerai à l'occasion...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Bonjour,

    Citation Envoyé par Sve@r
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    chardet.detect(fp.read())
    chardet.detect peut être coûteux en termes de performances, surtout pour de gros fichiers, car on doit lire l'intégralité du fichier en mémoire.

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    chardet.detect(fp.read(1024))
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    chardet.detect(fp.read(1024))
    Oui mais je viens de faire un test, j'ai pris /etc/passwd et lui ai rajouté un "é" à la fin => pas détecté.
    Après effectivement on tombe dans les rapports issus de risques et de probabilités...

    Citation Envoyé par fred1599 Voir le message
    car on doit lire l'intégralité du fichier en mémoire.
    Je crois qu'en passant par chardet.universaldetector on peut demander un traitement au fur et à mesure dans lequel chardet affine son résultat de façon incrémentale mais sans tout mettre en RAM. Il y a un exemple dans la doc mais j'ai pas essayé.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Citation Envoyé par Sve@r
    Oui mais je viens de faire un test, j'ai pris /etc/passwd et lui ai rajouté un "é" à la fin => pas détecté.
    Après effectivement on tombe dans les rapports issus de risques et de probabilités...
    Oui c'est pour cela que le plus simple est de connaître par avance les documents que l'on traite et leur encodage et ne pas compter sur des probabilités comme tu l'indiques si bien.
    En général il existe peu de cas où on ne peut pas savoir la manière dont a été encodé un fichier soit parce-qu'on l'écrit, soit par tests successifs jusqu'à trouver le bon encodage.
    Dans un script, j'ai jamais eu l'occasion ou le besoin d'utiliser chardet et toi ?
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par scalpel Voir le message
    Je constate bien une différence à la lecture, mais l'auteur montre en exemple que dans un des deux cas je ne devrait pas pouvoir ouvrir le fichier
    Vous pourrez ouvrir mais pas toujours lire.

    Pour le reste, un encodage 8 bits comme latin-1 pourra être décodé avec un autre encodage 8 bits. Il y aura peu d'erreur et généralement des caractères inattendus.

    Essayer de décoder un encodage 8 bits avec un décodeur utf-8 va généralement planter sur les caractères non ASCII. L'encodage UTF-8 de ces caractères se fait sur plusieurs bytes(*) et les concepteurs ont choisi d'alourdir l'encodage pour faciliter cette détection.

    (*)c'est ce qui fait qu'on pourra décoder un fichier utf-8 avec un décodeur latin-1... mais on verra des caractères en plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> '*é*'.encode('utf-8').decode('latin-1')
    '*é*'
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Dans un script, j'ai jamais eu l'occasion ou le besoin d'utiliser chardet et toi ?
    Un peu dans quelques scripts où chacun prend un CSV et en génère un autre issu d'un traitement du premier. J'ai alors utilisé chardet pour que le second ait le même encodage que le premier. Même si le premier est généralement toujours utf-8, je trouvais ça plus propre.
    Je l'avais mis aussi (à titre informatif) dans mon exemple de reader CSV.

    Et j'ai aussi essayé "chardet.universaldetector". Ca fonctionne aussi (je viens d'ailleurs de passer mes quelques 8 scripts utilisant chardet dans cette version).
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import chardet.universaldetector
    def encoding(fic, *, size=1024):
    	detector=chardet.universaldetector.UniversalDetector()
    	with open(fic, 'rb') as fp:
    		while True:
    			data=fp.read(size)
    			if not data: break
    			detector.feed(data)
    			if detector.done: break
    		# while
    	# with
    	detector.close()
    	return detector.result
    # encoding()
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Citation Envoyé par Sve@r
    j'ai aussi essayé "chardet.universaldetector". Ca fonctionne aussi (je viens d'ailleurs de passer mes quelques 8 scripts utilisant chardet dans cette version)
    Effectivement cette méthode semble plus sûre car elle attend d'avoir un seuil minimum de confiance suffisamment grand pour que detector.done soit à True.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  15. #15
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    A noté qu'il existe charset-normalizer qui lui justement essaye de faire une conversion (lecture) automatique. Est utilisé par défaut par la lib : requests, méthodes .text() et .json() si l'encoding n'est pas donné par le serveur (ce qui explique sont très fort taux d'utilisation)
    $moi= ( !== ) ? : ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VS2005 express] Encodage des fichiers en UTF-8
    Par xwindoo dans le forum Visual C++
    Réponses: 0
    Dernier message: 07/04/2008, 16h44
  2. [0.9.2][Zend_Translate] Encodage des fichier TMX
    Par Yoteco dans le forum Autres composants
    Réponses: 5
    Dernier message: 10/05/2007, 18h51
  3. Comment modifier l'encodage des fichiers sources ?
    Par ChPr dans le forum NetBeans
    Réponses: 2
    Dernier message: 01/05/2007, 21h16
  4. encodage des fichier .html
    Par rasleboldesid dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/08/2006, 07h23
  5. [Eclipse 2.1] Encodage des fichiers pour un projet
    Par _-Sky-_ dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/05/2005, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo