Как определить в какой кодировке файл?

Статус
В этой теме нельзя размещать новые ответы.

deepslam

Новичок
Как определить в какой кодировке файл?

Всем привет, поиск использовал, но ничего дельного не нашел.

Суть такова - читаю удаленный файл, но если там кодировка другая, то получаются крякозябры.

Про iconv знаю, но как определить исходную кодировку?

Как вариант использовать что то типа этого совета:

В кодировке Windows-1251 русские символы имеют
номера 192-255, в кодировке DOS -- 128-175 и 224-241. Соответственно,
можно попробовать что-то вроде:

$text = file_get_contents('file.txt')
$length = strlen($text);
$dos = 0;
$windows = 0;
for ($i=0; $i<$length; $i++) {
$n = ord($text{$i});
if ($n >= 192) {
$windows++;
}
if ((($n >= 128) and ($n <= 175)) or (($n >= 224) and ($n <= 241))) {
$dos++;
}
}
if (($windows == 0) and ($dos == 0)) {
echo 'File contains no Russian charactes';
} else {
if ($windows > $dos) {
echo 'File contains Russian text in Windows encoding';
} else {
echo 'File contains Russian text in DOS encoding';
}
}
Но думаю существует более простое решение?
 

boombick

boombick.org
100%-го способа определения кодировки, ЕМНИП, не существует...
Если я ошибаюсь, то буду очень рад увидеть материалы по данному вопросу :)

-~{}~ 03.10.07 15:57:

ЗЫ Когда же уже настанет эпоха юникода? :)
 

deepslam

Новичок
Да , я бы тоже почитал статью по поводу определения.

Пока что у меня есть мысль только смотреть кодировку в тэге meta и header.
 

SiMM

Новичок
> mb_string
А он определяет однобайтовые кодировки, отличные от 7мибитного ASCII?

> В кодировке Windows-1251 русские символы имеют номера 192-255, в кодировке DOS -- 128-175 и 224-241
Кодировки бывают не только "русскими".
 

Wicked

Новичок
Суть такова - читаю удаленный файл, но если там кодировка другая, то получаются крякозябры.
Ты ее можешь узнать один раз и навсегда? Или она меняется время от времени? :) Или таких файлов просто много, и для каждого "фиксировать" кодировку - сильно муторно?

На каких языках может быть этот файл (файлы) ?
 

Wicked

Новичок
ну и действительно, гадать кодировки на символах - дело последнее :)

может стоит остановиться на анализе header'а ?
 

deepslam

Новичок
а если будет просто текстовый файл в другой кодировке?
Как например браузер определяет?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
SiMM
Это лишь предположение.

В моем случае было всё намного проще.
И я обошёлся скриптом Юрия Попова
http://popoff.donetsk.ua/text/work/libs/a/charset/

[офф.]
За который чрезмерно благодарен. :)
 

deepslam

Новичок
Mr_Max
Помогло! Респект за ссылку, жалко здесь репутации нету плюсанул бы!
 

SiMM

Новичок
> Как например браузер определяет?
Никак не определяет, если в хидерах не указано.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
ну началось...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху