Cómo usé Python para resolver la locura de codificación sin declaración

Hay un problema muy antiguo relacionado con la “detección de codificación” en un archivo de texto que ha sido parcialmente resuelto por un programa como Chardet. En efecto,

La mayoría de los estándares proporcionan una forma de declarar la codificación, como en las especificaciones HTTP, pero la realidad es diferente, una gran parte de Internet todavía tiene contenido con una codificación desconocida. Se podría señalar, por ejemplo, el subtítulo de subdirección (SRT). Esta es la razón por la que un paquete tan popular como Requests lista Chardet como requisito para adivinar la codificación aparente en recursos remotos. En primer lugar, las bibliotecas como Chardet son poco fiables,

sin mantenimiento y que a veces incluso no les gustaba públicamente por su dueño. Casi todas las bibliotecas populares están usando la misma idea, para cada página de código o codificación que quieren detectar crean una sonda específica. Son

Lo primero que no me gustó fue la idea de un solo sensor por cada codificación

que podría dar lugar a especificaciones de codificación difíciles. En segundo lugar, yo soy

convencido de que no debemos preocuparnos por la codificación de origen, que

porque dos tablas diferentes pueden producir dos archivos idénticos.

>
Aquí es donde vine con una alternativa. Un loco : Usar fuerza bruta para dar sentido a un contenido dado. Para cada codificación existe.

  1. Excluir la codificación que no se ajusta en absoluto al contenido
  2. Medir el caos observable una vez abierto, identificar cosas como ” жГЪСЭ Ян”
  3. Medir la coherencia por frecuencias de apariencia de letras

Al no crear una sonda específica para cada codificación, pude proporcionar

Detección de alrededor de 90 codificaciones! Eso es más del doble comparado con

Chardet y en realidad es más fiable. Así que les presento Charset Normalizer. El primer detector universal de caracteres. O si está ocupado o algo así, pruébelo en línea en https://charsetnormalizerweb.ousret.now.sh/

Etiquetas

PythonEncodingProgrammingOpensourceDeclareless Encoding MadnessEncoding MadnessCodingCodingChardet

Comentarios

Continúe la discusión