stringtranslate.com

Detección de juego de caracteres

La detección de codificación de caracteres , detección de conjunto de caracteres o detección de página de códigos es el proceso de adivinar heurísticamente la codificación de caracteres de una serie de bytes que representan texto. Se reconoce que la técnica no es confiable y solo se utiliza cuando metadatos específicos , como un encabezado Content-Type: de HTTP , no están disponibles o se supone que no son confiables.

Este algoritmo generalmente implica un análisis estadístico de patrones de bytes, como la distribución de frecuencias de trígrafos de varios idiomas codificados en cada página de códigos que se detectará; dicho análisis estadístico también se puede utilizar para realizar la detección de idiomas . Este proceso no es infalible porque depende de datos estadísticos.

En general, la detección incorrecta del juego de caracteres conduce a mojibake .

Uno de los pocos casos en los que la detección de conjuntos de caracteres funciona de manera confiable es la detección de UTF-8 . Esto se debe al gran porcentaje de secuencias de bytes no válidas en UTF-8, por lo que es extremadamente improbable que el texto en cualquier otra codificación que utilice bytes con el bit alto establecido pase una prueba de validez de UTF-8. Sin embargo, las rutinas de detección de conjuntos de caracteres mal escritas no ejecutan primero la prueba confiable de UTF-8 y pueden decidir que UTF-8 es otra codificación. Por ejemplo, era común que los sitios web en UTF-8 que contenían el nombre de la ciudad alemana München se mostraran como München, debido a que el código decidía que era una codificación ISO-8859 antes (o sin) siquiera probar para ver si era UTF-8.

El UTF-16 es bastante fiable de detectar debido a la gran cantidad de nuevas líneas (U+000A) y espacios (U+0020) que se deben encontrar al dividir los datos en palabras de 16 bits y a la gran cantidad de bytes NUL, todos en posiciones pares o impares. Se deben comprobar los caracteres comunes, confiando en una prueba para ver que el texto sea válido. El UTF-16 falla: el sistema operativo Windows detectaría erróneamente la frase " Bush ocultó los hechos " (sin una nueva línea) en ASCII como UTF-16LE chino , ya que todos los pares de bytes coincidían con caracteres Unicode asignados en UTF-16LE.

La detección de conjuntos de caracteres es particularmente poco fiable en Europa, en un entorno de codificaciones ISO-8859 mixtas. Se trata de codificaciones de ocho bits estrechamente relacionadas que comparten una superposición en su mitad inferior con ASCII y todas las disposiciones de bytes son válidas. No existe una forma técnica de diferenciar estas codificaciones y su reconocimiento depende de la identificación de características del lenguaje, como frecuencias de letras o grafías.

Debido a la poca fiabilidad de la detección heurística, es mejor etiquetar correctamente los conjuntos de datos con la codificación correcta. Consulte Codificaciones de caracteres en HTML#Especificación de la codificación de caracteres del documento . Aunque UTF-8 y UTF-16 son fáciles de detectar, algunos sistemas requieren codificaciones UTF para etiquetar explícitamente el documento con una marca de orden de bytes (BOM) prefijada.

Véase también

Referencias

Enlaces externos