Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > PHPExcel и русская кодировка файлов из 1С


Автор: Vardoulacha 25.11.2014, 14:51
Вроде PHPExcel единственная нормальная библиотека для работы с xls файлами.

1. Приходит файл xls (предположительно его сгенерировал 1С).
2. Если его сначала открыть в Excel то видим русские символы, нажимаем Файл - Сохранить, файл немного меняет размер О_о
3. Открываем через PHPExcel все по русски, все гуд, кодировка UTF-8 (это видимо PHPExcel делает. молодец какой)

А вот если файл, как и положено, без левых открываний и сохранений. сразу открыть через PHPExcel то увидим вот такие строки
Код

Êîëè÷åñòâî ïî ñêëàäó: 00. Ñêëàä Óäàëåííûé


Это добивается вот такими настройками
Код

PHPExcel_Settings::setLocale('ru');
$objReader->setReadDataOnly(true);


Иначе вообще будет пусто на экране, ах да выводящий скрипт в кодировке utf-8, в начале скрипта делаю это
Код

header("Content-type: text/html; charset=UTF-8");


Перерыл информацию от гугля, но нашел только такие же вопросы, но никто так и не смог побороть эту проблему.

Открываем онлайн кодировщик
http://www.online-decoder.com/ru

Отдаем ему текст кракозябрами, жмем "Подбор" и они счастливый пишет "Я знаю нужные кодировки Windows-1252 => Windows-1251"
И результат показывает: "Количество по складу: 00. Склад Удаленный"

А я беру пишу такой скрипт, и получаю пустое окно ((
Код

header("Content-type: text/html; charset=UTF-8");

$str1 = 'Êîëè÷åñòâî ïî ñêëàäó: 00. Ñêëàä Óäàëåííûé<br>';
$str2 = iconv('windows-1252', 'windows-1251', $str1);
echo iconv('windows-1251', 'utf-8', $str2);


Помогите победить кодировку? Или может есть какой аналог PHPExcel но который нормально файлы русские открывает.

Автор: spbnvb 27.11.2014, 18:23
ну вообще то в 1С-ке utf-16, если не конвертировать программно в 1с-ке или php, что же, делайте это вручную.

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/PHPExcel-i-russkaya-kodirovka-faylov-iz-1S-id54746ddcae2015eb6d8b4567#findElement_E7045_547741f0ae20151045ddce3a_0

Автор: Vardoulacha 3.12.2014, 08:36
Цитата(spbnvb @  27.11.2014,  18:23 Найти цитируемый пост)
ну вообще то в 1С-ке utf-16

ааа, вон оно что, попробую конвертить utf-16 -> utf-8, спасибо

а так я вышел из ситуации путем замены библиотеки PHPExcel на http://sourceforge.net/projects/phpexcelreader/?source=navbar

теперь если прокатит конвертор из utf-16 то посмотрю какая либа работает быстрее (скорость мне важна)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)