Отличное решение для преобразования всевозможных кракозябр на русском языке в неизвестной кодировке в виндовозную кодировку Windows-1251, которое является просто необходимым решением при написании всяческих парсеров контента и тому подобных скриптах, было найдено мной в процессе поиска на просторах интернета.
В частности у меня была проблема несовпадения кодировок на различных сайтах, и в процессе стягивания контента с одного на другой текст доставлялся в виде красивых, однако нифига ни разу не понятных кракозябр, а стандартные средства php, типа iconv и mbstring, не могли распознать, что же это за получившаяся в процессе конвертирований кодировка…
Решение было найдено у Юрия Попова в виде модуля charset_x_win. Большой респект и спасибо ему за это!
Описание:
string charset_x_win(string $s);
где $s — cтрока в неизвестной кодировке. В текущей версии функции эта строка может быть в одной из кодировок: windows-1251, koi-8r, utf-8. Строка должна быть на русском языке.
Замечание: Поскольку вопрос корректности кодировки не касается символов с кодом меньше 128, то входная строка может быть так же и на английском, в транслите или на любом другом языке, в котором используются только символы с кодом меньше 128.
Функция правильно обрабатывает буквы Ё,ё и символы «».
Функция специальным образом оптимизирована для конвертирования коротких фраз. Суть оптимизации состоит в подсчёте недопустимых двух- и трёх-символьных последовательностей для слов русского языка. Для конвертирования больших текстов вполне подходят и более простые методы, состоящие в простом подсчёте допустимых/недопустимых символов.
Однако функция может быть использована и для конвертирования текстов значительных размеров. При конвертировании больших текстов для анализа кодировки используется начальный фрагмент текста, в котором содержится 256 символов с кодом больше 127.
Работа функции состоит в следующем. Исходная строка последовательно конвертируется из всех предусмотренных кодировок в кодировку windows-1251. Для каждого варианта конвертирования определяется некоторый числовой вес, который соответствует степени корректности фразы на русском языке. Этот вес зависит от следующих параметров входной строки:
- количество «хороших символов».
Хорошими считаются символы, соответствующие буквам А-Я и а-я. Чем больше хороших символов, тем выше вероятность того, что кодировка — правильная. - количество «плохих символов».
Плохими считаются символы, с кодом больше 127, но которые не соответствуют буквам А-Я и а-я. Чем больше плохих символов, тем меньше вероятность того, что кодировка — правильная. - количество недопустимых последовательностей из двух и из трёх символов в русском языке.
- XAMPP, или Великолепный аналог Denwer под Linux, Windows, MacOS
- Русские ID3-теги в AmaroK и совместимость с Windows
- Приятные впечатления от Windows 7
- Совместное существование Windows Vista и Ubuntu Linux
- Microsoft работает над новой ОСью. Не Windows…
- Лицо Ubuntu назвал три преимущества Linux перед Windows 7
- Установить rpm-пакет в *ubuntu? Да не вопрос!
- Mandriva vs (K)ububtu, или мысли о дистрибутивах
- Десяток факторов, определяющих запрограммированность на бедность
- Чем опасны беспорядочные связи с социальными закладками
- преобразование кодировок
- преобразование строк windows-1251 qt
- преобразовать в windows-1251
- charset_x_win примеры
- преобразование кодирование win1251 на builder
Считается, что в русском языке не могут встретиться, например, последовательности из двух символов такие как «аы» или «нъ» или из трёх символов, например, такие как «юаа» или «йвб». Чем больше в строке таких последовательностей, тем меньше вероятность того, что кодировка — правильная.
Пример использования функции charset_x_win().
echo charset_x_win('ЮЕМПЧЕЛ')."<br />"; echo charset_x_win('юемпчел')."<br />"; echo charset_x_win('человек')."<br />"; echo charset_x_win('ЧЕЛОВЕК')."<br />"; echo charset_x_win("человек")."<br />"; echo charset_x_win("ЧЕЛОВЕК")."<br />";
Результат выполнения этого примера:
человек ЧЕЛОВЕК человек ЧЕЛОВЕК человек ЧЕЛОВЕК
Собственно сам скрипт здесь.
]]> ]]>

надо будет добавить koi-8u и преобразование не только в 1251
А где-нибудь такой он-лайн модуль есть, чтобы в любой момент можно было зайти и преобразовать?
Кафедра ПМИ, приятно видеть знакомые лица