PHP определение кодировки

652
07 февраля 2017, 22:56

Есть скрипт что пытается определить кодировку и сменить на WINDOWS-1251.
Вот основной кусок:

$from = mb_detect_encoding($cell,"auto");
print_r($from);echo"\n";
$cell = iconv( $from, "WINDOWS-1251//IGNORE", $cell );

Кто догадался, так происходит с каждой ячейкой одного из xls файла.
В общем, вторая строка с принтом, показывает, что ASCII.
По результату видно брюкозабры, что свидетельствует о не правильном определение кодировки и дальнейших действий.

Я долго, возможно не достаточно, гуглил, и пришел к проверки этих двух строчек:

print_r(mb_list_encodings());
print_r(mb_detect_order());

Вторая отдает скромненький массивчик:

Array
(
    [0] => ASCII
    [1] => UTF-8
)

Первая значительно больше. Причем в зависимости от версии PHP список чуть-чуть меняется.
Сперва грешил на это, но потом открыл файл в OpenOffice, который даже не предложил выбрать кодировки.
Установил какое расширение, где выбрал латин-1 => кирилица, и все гуд.
То есть latin-1, подумал я, но он есть, как понял, в любой версии.

Хотел первой строчкой получать список и подсовывать его в mb_detect_encoding, но там еще есть какой то порядок.

В общем я запутался уже...

Подскажите как нормально определить кодировку?
Или дополните по моему сабжу, если не получилось полной каши.

Спасибо.

READ ALSO
Ajax игнорирует файл

Ajax игнорирует файл

Проект на LaravelЕсть форма с загрузкой файла

496
Кеширование картинок Nginx & Laravel

Кеширование картинок Nginx & Laravel

Для кеширования картинок (nginx) у меня на сейте прописано правило:

498
Laravel Eloquent, Древовидные категории

Laravel Eloquent, Древовидные категории

Всем привет, хотел бы обратиться за помощью чтобы зарефакторить отношнения в моделях в LaravelЕсть у меня таблица вида:

767