Detección de codificación

Detección de codificación

Detección de codificación

HTML llega como bytes, y la capa de codificación responde la primera pregunta de cualquier canal: ¿qué codificación y qué texto? La detección sigue el enfoque estándar — marcas de orden de bytes primero, luego declaraciones dentro del contenido.


Detección a partir de bytes

detect_encoding() inspecciona una secuencia de bytes y devuelve un EncodingDetectionResult que lleva la codificación detectada, un nivel de confianza y el texto decodificado. Un UTF-8 BOM se detecta como seguro, y los bytes del BOM se eliminan de la salida decodificada:

from aspose_html.encoding.detection import detect_encoding
result = detect_encoding(b"\xef\xbb\xbf<p>x</p>")
print(result.encoding)
print(result.confidence)
print(result.text)

El kit de detección

sniff_bom() inspecciona solo las marcas de orden de bytes; prescan_meta_charset() aplica el meta-preescaneo de estándares para declaraciones de juego de caracteres dentro del documento; decode_bytes() realiza la decodificación una vez que se elige una codificación. Las codificaciones no compatibles generan el UnsupportedEncodingError tipado.

Nombres canónicos

Las etiquetas de codificación varían en la práctica — latin1, iso-8859-1 y us-ascii significan windows-1252 según el estándar de codificación. get_canonical_name() asigna cualquier etiqueta registrada a su nombre canónico.


Consejos y Mejores Prácticas

  • Confía en el BOM: cuando está presente, es definitivo y el detector informa una confianza cierta.
  • Normaliza las etiquetas mediante get_canonical_name() antes de comparar codificaciones.
  • Utiliza result.text de la detección en lugar de volver a decodificar los bytes tú mismo.

Problemas Comunes

ProblemaCausaSolución
BOM aparece en el texto decodificadoDecodificación manual en lugar de detect_encoding()La detección elimina los bytes BOM de result.text
La comparación de etiquetas fallaDesajuste entre alias y nombre canónicoNormalizar con get_canonical_name()
UnsupportedEncodingError generadoCodificación de entrada fuera del registroManejar el error tipado; volver a codificar aguas arriba

FAQ

¿Qué devuelve la detección?

Un EncodingDetectionResult con encoding, confidence y decodificado text.

¿Se manejan las etiquetas heredadas?

Sí — la tabla de alias asigna etiquetas como latin1 y us-ascii a sus codificaciones canónicas.

¿La detección lee las metaetiquetas?

prescan_meta_charset() implementa el meta-prescan de los estándares y participa en la detección.


Resumen de API Reference

Clase/MétodoDescripción
detect_encodingDetectar codificación y decodificar bytes
EncodingDetectionResultObjeto de resultado de detección
sniff_bomInspección de marca de orden de bytes
prescan_meta_charsetMeta-preescaneo de estándares
decode_bytesDecodificar con la codificación elegida
get_canonical_nameCanonizar una etiqueta de codificación

Ver también

 Español