Ну и вопросец… сейчас не вспомню — год уже прошел.
Ваши опыты немного не в той степи — глюки с кодировками возникают в передаваемых браузером POST- и GET-данных, а не в выводе страницы с заданной кодировкой.
Да нет, он именно о том. Могу авторитетно заявить. Опыт именно про Content-Type и я пока еще не встречал ни одного браузера который бы этот заголовок игнорировал. Если конечно заголовок сформирован корректно (привет IE и utf8 vs utf-8).
у этого «от кого» обычно два варианта — utf-8 и 1251, различить их и исправить неправильный вариант несложно — редкий осмысленный текст в 1251 случайно окажется валидным utf-8.
А ничего, что вероятность «яЯ» нужно считать нулевой?! :)
По-хорошему, частоты регистров надо смотреть фактические, как и были.
Единственное, что «оба капсом» допустимы частоты, а разномиксовые — надо смотреть только на началах слов.
Может быть лучше вообще убрать из дампа Аа и аА, а оставить только маленькими и капсом? Сразу так не скажешь, но вполне возможно, что вы и правы. Просто я когда это писал, руководствовался тем, что нам вообще какбы неважен регистр, поэтому и вставил все вариации. Ну И МоЖНо ПРиДумАть ПрИМер, когда анализатор, как мне кажется, обломается, если убрать варианты аА.
Мне как-то раз надо было определить кодировку текста сграбленных страниц в вебе, тоже на PHP. Все, что я в инете находил на эту тему — было какое-то босяцкое, с множеством условий каких-то и ограничений. Самое дельное, что я находил, было для питона, сейчас уж не вспомню, что это было…
Я че-то голову сломал, и начал думать, ну почему нету какой-нибудь нормальной библиотеки/модуля, как в браузерах, они ж хорошо определяют кодировку… И тут в буквальном смысле над моей, уже наверно дымящейся, головой, загорелась лампочка озарения :)
Я, одухотворенный, пошел и скачал исходники фокса, выдернул оттуда модуль определения кодировок, написал строк в 15-20 main.cpp и скомпилировал это все в исполняемый файл linux) Работает супер)
Если пара = «больше одного», то да, верно) <зануда mode on>Только зачем пары находить? Не проще ли просто проверять каждый байт до тех пор, пока не найдёшь нужные биты в начале?
Определение кодировки текста в PHP, часть 2 — биграммы