Spreadsheet::DataFromExcel и кодировка

 
0
 
Perl
ava
olexdj | 30.03.2013, 16:46
Использую для чтения EXCEL модуль Spreadsheet::DataFromExcel
Кириллица читается кракозябрами, не могу побороть ((

Методом научного тыка определил кодировку в екселе как UCS-2 (с UCS2 тоже самое).

Так вот после декодирования с UCS-2 в cp1251 с кириллицей все ОК, а латиница, цифры и символы стают знаками вопроса.

Декодировть пробовал так:


Encode::from_to($text, "UCS-2","cp1251");


и так:


$text = encode('cp1251', decode('UCS-2', $text));


Результат одинаковый. Помогите плиз. 
Kommentare (4)
ava
Pfailed | 30.03.2013, 17:15 #
Выложите файл с непонятной кодировкой.
ava
olexdj | 30.03.2013, 17:55 #
ava
Pfailed | 30.03.2013, 19:20 #
Очевидно, что строки содержащие только ASCII символы никак не кодируются, а другие кодируются UTF-16. Когда мне нужно было отличить UTF-16 от ASCII я пользовался такой колхозной проверкой

if ($e =~ /\00|\04/) {
      Encode::from_to($e, "UCS-2", "UTF-8");
}


Возможно есть модуль, который сумеет отличить ascii от utf-16 и сделает это более корректно или можно углубиться в особенности кодирования utf-16 и сделать точную проверку.
ava
olexdj | 30.03.2013, 19:43 #
Pfailed, уррряяя!!! Помогло!!!   smile 

Спасибище! smile 
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  Pfailed   olexdj
advanced
Absenden