stringtranslate.com

Detección de caracteres

La detección de codificación de caracteres , detección de juegos de caracteres o detección de páginas 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 usa cuando metadatos específicos , como un encabezado HTTP Content-Type:, 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 frecuencia 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 del idioma . Este proceso no es infalible porque depende de datos estadísticos.

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

Uno de los pocos casos en los que la detección 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 conjunto de bits alto pase una prueba de validez de UTF-8. Sin embargo, las rutinas de detección de juegos de caracteres mal escritas no ejecutan primero la prueba confiable UTF-8 y pueden decidir que UTF-8 es alguna 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 realizar pruebas para ver si era UTF-8.

UTF-16 es bastante confiable de detectar debido a la gran cantidad de nuevas líneas (U+000A) y espacios (U+0020) que deben encontrarse al dividir los datos en palabras de 16 bits, y una gran cantidad de bytes NUL, todos en pares. o ubicaciones extrañas. Se deben verificar los caracteres comunes , basándose en una prueba para ver que el texto es válido. 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 chino . 16LE , ya que todos los pares de bytes coincidieron con los caracteres Unicode asignados en UTF-16LE.

La detección de caracteres es particularmente poco confiable en Europa, en un entorno de codificaciones mixtas ISO-8859. 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 distinguir estas codificaciones y reconocerlas depende de identificar características del lenguaje, como la frecuencia de las letras o la ortografía.

Debido a la falta de confiabilidad de la detección heurística, es mejor etiquetar adecuadamente los conjuntos de datos con la codificación correcta. Consulte Codificaciones de caracteres en HTML#Especificar 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.

Ver también

Referencias

enlaces externos