Виявлення кодування

Виявлення кодування

Визначення кодування

HTML надходить у вигляді байтів, і шар кодування відповідає на перше питання будь-якого конвеєра: яке кодування і який текст? Визначення слідує стандартному підходу — спочатку маркери порядку байтів, потім декларації вмісту.


Визначення з байтів

detect_encoding() аналізує потік байтів і повертає EncodingDetectionResult, який містить виявлене кодування, рівень впевненості та декодований текст. UTF-8 BOM визначається як певне, і байти BOM видаляються з декодованого виводу:

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)

Набір інструментів визначення

sniff_bom() перевіряє лише маркери порядку байтів; prescan_meta_charset() застосовує стандартний метаперегляд для декларацій набору символів у документі; decode_bytes() виконує декодування після вибору кодування. Непідтримувані кодування викликають типізовану UnsupportedEncodingError.

Канонічні назви

Мітки кодування різняться в реальному світі — latin1, iso-8859-1 та us-ascii всі означають windows-1252 згідно зі стандартом кодування. get_canonical_name() відображає будь-яку зареєстровану мітку до її канонічної назви.


Поради та найкращі практики

  • Довіряйте BOM: коли він присутній, він є остаточним, і детектор повідомляє певну впевненість.
  • Нормалізуйте мітки за допомогою get_canonical_name() перед порівнянням кодувань.
  • Використовуйте result.text з детекції, а не повторно декодуйте байти самостійно.

Поширені проблеми

ПроблемаПричинаВиправлення
BOM з’являється в декодованому текстіРучне декодування замість detect_encoding()Виявлення видаляє байти BOM з result.text
Порівняння міток не вдаєтьсяНевідповідність між псевдонімом і канонічною назвоюНормалізувати за допомогою get_canonical_name()
UnsupportedEncodingError піднятоКодування вхідних даних поза реєстромОбробити типізовану помилку; повторно кодувати вище

FAQ

Що повертає детекція?

Один EncodingDetectionResult з encoding, confidence і декодованим text.

Чи обробляються застарілі мітки?

Так — таблиця псевдонімів відображає мітки, такі як latin1 і us-ascii, у їх канонічні кодування.

Чи зчитує виявлення мета-теги?

prescan_meta_charset() реалізує стандарт meta-prescan і бере участь у виявленні.


API Reference Підсумок

Клас/МетодОпис
detect_encodingВизначити кодування та декодувати байти
EncodingDetectionResultОб’єкт результату виявлення
sniff_bomПеревірка маркера порядку байтів
prescan_meta_charsetМетаперевірка стандартів
decode_bytesДекодуйте за допомогою обраного кодування
get_canonical_nameКанонізуйте мітку кодування

Дивіться також

 Українська