Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spreadsheet::DataFromExcel и кодировка, Траблы с кириллицей 
:(
    Опции темы
olexdj
Дата 30.3.2013, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.3.2011

Репутация: нет
Всего: нет



Использую для чтения EXCEL модуль Spreadsheet::DataFromExcel
Кириллица читается кракозябрами, не могу побороть ((

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

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

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

Код

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


и так:

Код

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


Результат одинаковый. Помогите плиз.

Добавлено через 14 минут и 52 секунды
Декодер Лебедева http://www.artlebedev.ru/tools/decoder/ определяет кодировку кириллицы как 7-bit ASCII → ISO-8859-5

PM MAIL   Вверх
Pfailed
Дата 30.3.2013, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Выложите файл с непонятной кодировкой.


--------------------
PM MAIL   Вверх
olexdj
Дата 30.3.2013, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.3.2011

Репутация: нет
Всего: нет



Pfailed, да любой ексель-файл, вот те что я курочу - 

http://www1.zippyshare.com/v/34615938/file.html
http://www1.zippyshare.com/v/49513577/file.html
http://www1.zippyshare.com/v/30519328/file.html

Добавлено через 2 минуты и 26 секунд
Пробовал декодировать с UCS2, UCS-2, UCS-2BE, результат идентичный - кириллица нормально отображается, все остальное - знаки вопроса.
PM MAIL   Вверх
Pfailed
Дата 30.3.2013, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



Очевидно, что строки содержащие только ASCII символы никак не кодируются, а другие кодируются UTF-16. Когда мне нужно было отличить UTF-16 от ASCII я пользовался такой колхозной проверкой
Код

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


Возможно есть модуль, который сумеет отличить ascii от utf-16 и сделает это более корректно или можно углубиться в особенности кодирования utf-16 и сделать точную проверку.


--------------------
PM MAIL   Вверх
olexdj
Дата 30.3.2013, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.3.2011

Репутация: нет
Всего: нет



Pfailed, уррряяя!!! Помогло!!!   smile 

Спасибище! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0430 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.