среда, 12 февраля 2014 г.

PHPExel default codepage кодировка по умолчанию

При чтении файла отображались иероглифы, оказалось что файл экселя был кривым и кодировка в заголовке не была указана, по умолчанию PHPExel включает кодировку cp1252, тогда как в православной виндовой кириллице cp1251.

Открываем файл Reader/Exel5.php
и находим по слову 1252
Исправляем параметр на CP1251 и вуаля, бракованый XLS (генерируемый непонятной складской программой у поставщиков).


Далее я столкнулся еще с одной проблемой - когда определенная кодировка оказывается неподдерживаемой, хотя на деле cp1251.

Файл PHPExcel/Shared/CodePage.php, примерно после 89 строки нужно добавить выделенную красным цветом строку:

            case 32769:    throw new Exception('Code page 32769 not supported.');
                                            break;    //    ANSI Latin I (BIFF2-BIFF3)
            case 65001:    return 'UTF-8';        break;    //    Unicode (UTF-8)
            default: return 'CP1251';
        }

        throw new Exception('Unknown codepage: ' . $codePage);