Добрый день.
На сайте надо реализовать определение кодировки простого текстового файла.
Сейчас это реализовано простейшим способом.
$filecontent = file_get_contents($path . '/' . $this->filename);
$c = mb_detect_encoding($filecontent, 'cp1251, UTF-8');
if($c == 'Windows-1251'){
$filecontent = iconv('Windows-1251', 'UTF-8', $filecontent);
}
Но если файл в другой кодировке, отличной от widnows-1251, то mb_detect_encoding() не всегда определяет точно, в какой именно кодировке файл.
Как в этом случае можно определить точно кодировку, чтобы привести её к UTF-8?
Например, файл может быть в windows-1252 или utf-16 или ещё какой либо.
Расчёт ведётся на пользователя, который ничего не знает о кодировках и не заморачивается настройкой кодировки в системе и блокноте. Он пишет текст в той кодировке какая есть, но на сайте, перед записью в базу, надо определить в какой именно и корректно показать модератору этот текст в текстовой области.
p.s. При таком решении, что я показал выше, если текст начинается с цифры, то остальной текст просто не выводится, если кодировка отлична от cp-1251.