Определение кодировки текста на PHP.

Данное решение в своей реализации опиралось на статью, опубликованную на Хабре

Краткое содержание идеи.

  1. Типичный текст на русском языке имеет вполне определённую частоту появления в нём определённых символов(этот принцип давно и успешно используется для взлома шифров, основанных на простой замене).
  2. Символы языка в различных кодировках имеют различные коды, и можно составить таблицу спектров (частоты появления кода символа), для каждой из кодировок.
  3. Проходя текст посимвольно, прибавляем частоту кода каждого символа в к соответствующей кодировке. Это как бы рейтинг кодировки
  4. Кодировка  с наибольшим рейтингом по завершению строки и считается кодировкой текста.

Что привнесено

  1. Добавил ещё одну важную кодировку: UTF-8.
  2. Причесал код.
  3. Собрал всё в одну библиотеку, готовую к употреблению.

На строках менее 10 кириллических символов детектор иногда ошибается, строки длиной 100 и более символов определяются практически безошибочно.

Скачать код

Пример использования

$charset = new charset();
$text = file_get_contents("before.html");
echo $charset->detect($text);

Добавить комментарий