тгТихая грань
ОПЕРАЦИЯ · КОДИРОВКИ

Определить кодировку с оговорками

Проверить BOM и возможность строгого чтения UTF-8.

Инструмент: Python 3 · риск: read-only · проверено: 2026-02-21

Предварительные условия

Python 3; небольшой файл input.txt.
Команда
python3 - <<'PY'
from pathlib import Path
b = Path("input.txt").read_bytes()
for mark, label in [(b"\xff\xfe\x00\x00", "UTF-32 LE"), (b"\x00\x00\xfe\xff", "UTF-32 BE"), (b"\xef\xbb\xbf", "UTF-8 BOM"), (b"\xff\xfe", "UTF-16 LE"), (b"\xfe\xff", "UTF-16 BE")]:
    if b.startswith(mark):
        print(label); break
else:
    try: b.decode("utf-8"); print("Совместим с UTF-8; это не доказательство")
    except UnicodeDecodeError: print("Не UTF-8; нужна информация источника")
PY

Объяснение аргументов

Длинные BOM проверяются раньше коротких; decode использует строгий режим.

Ожидаемый результат

Предположение с указанием основания, без автоматической перекодировки.

Проверка

Сопоставьте с документацией источника и известными не-ASCII словами.

Распространённые ошибки

  • ASCII совместим со многими кодировками; эвристика не является гарантией.

Обратимость

Без изменений.

Применимые форматы

plain-text csv