Forum Webscript.Ru
Программирование => PHP => Тема начата: Microname от 25 Июня 2002, 02:42:33
-
Допустим, что переменная содержит русский текст
$text = "какой-то текст";
Как определить в какой он кодировке ?
-
Смотря откуда этот текст берется, из формы или из базы.
-
$buff = implode("",file("http://www.сайт.com/index.html"));
$buff = это страница, но кодировка ее неизвестна.
Мета тегов в ней нет.
-
Microname
А хоть какое-нибудь слово известно с этой страницы (в кириллице)? Может название страницы фиксировано.
Если так, то можно конвертировать это слово в различные кодировки и искать его в тексте.
-
Если слово со страницы известно, то можно так:
// $text содержит твою страницу
$charsets = array("k", "i", "a", "d", "m", "w");
$charsets_names = array("koi8-r", "iso8859-5", "ALT", \'x-cp866\', \'x-mac-cyrillic\', "windows-1251");
$search = "какое-либо слово";
for ($i = 0; $i < sizeof($charsets); $i++) {
$word = convert_cyr_string($search, "w", $charsets[$i]);
if (strstr($text, $word)) {
$str_charset = $charsets_names[$i];
break;
}
}
if ($str_charset) echo "Кодировка ".$str_charset; else echo "Неизвестная кодировка";
-
Да, ты прав. Такой способ прокатит в данном случае.
Спасибо.
-
А вообще такое делается по частотному анализу (так "а" чаще встречается например или большие буквы - реже маленьких etc). В FAR-е есть таблицы и в═Mozilla)