Bonjour à tous,

Le sujet du problème d'encodage à l'ouverture d'un fichier contenant du texte ne date pas d'hier. Certains pourraient même considérer ce sujet comme caduque en 2019.
Même s'il existe des normes qui nous permettent de déceler l'encodage d'une ressource ce n'est pas le cas de toutes les ressources.

Une part importante de données accessibles sur internet y est sans pouvoir en connaître l'encodage d'origine. (On peut pointer du doigt le format subrip subtitle *.srt)

C'est pourquoi une bibliothèque aussi populaire que Requests embarque une méthode permettant de connaître l'encodage dit "apparent".

Requests utilise en dépendance la bibliothèque chardet qui permet de déduire d'un objet bytes la meilleure table d'encodage.

Néanmoins l'histoire ne s'arrête pas là. Malheureusement, pour ceux ayant eu recours à chardet, celui-ci n'est pas suffisamment fiable.
Cette bibliothèque, pour chaque table d'encodage, essaie de créer un "détecteur". Autrement dit, beaucoup de code spécifique aussi connu sous le nom de "hard coding".

En ayant eu à affronter cette problématique j'ai décidé de me prêter au défi et j'ai démarré un projet libre permettant d'offrir une alternative viable*.

Au lieu de créer un détecteur par table, j'ai décidé d'essayer de créer un seul détecteur indifféremment des tables.

Ce que j'essaie de réaliser pour y parvenir :

Pour chaque table d'encodage
  • Vérifier si le contenu ne dépasse pas la table d'encodage
  • Mesurer le chaos
  • Mesurer la cohérence


Plus d'explication sur la page du projet.

Pour ceux que ça intéresse, je vous présente la bibliothèque Charset Normalizer. (Lic. MIT)

* : Toujours au stade de preuve de concept à ce jour. (v 0.3)