Автор Тема: Tie::CSV не работает с русским языком?  (Прочитано 4177 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Moroz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Tie::CSV не работает с русским языком?
« : 03 Сентября 2007, 19:57:11 »
Доброго времени суток всем!

Не имею опыта работы с Perl.
Стоит такая задача: скачать прайс из инета в виде .xls и закачать его в PostgreSQL. Все это в Linux посредством скриптов shell и Perl.

Первую часть задачи решил. Прайс скачивается и из экселевого формата преобразуется в формат CSV в UTF8 кодировке.
Сейчас нужно произвести кое-какую обработку в с помощью Perl.
Использую модуль Tie::CSV (читает CSV файл в двумерный массив), но столкнулся с проблемой: Tie::CSV не хочет читать поля на русском языке. Поля на английском читает.

Кто может подсказать как решить эту проблему?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Tie::CSV не работает с русским языком?
« Ответ #1 : 04 Сентября 2007, 13:47:17 »
cpan о существовании модуля Tie::CSV не подозревает, может Tie::Handle::CSV? Если да, чтите багрепорт и рекомендации
http://rt.cpan.org/Public/Bug/Display.html?id=27809
The documentations is your friend

Оффлайн Moroz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Tie::CSV не работает с русским языком?
« Ответ #2 : 04 Сентября 2007, 21:25:42 »
Извиняюсь за неточность. Да, это Tie::Handle::CSV.
Посмотрел Вашу ссылку. Там речь идет, насколько я понял, о коде окончания строки ^Z в досовских файлах. В качестве решения предлагается использовать парсер от Text::CSV_XS. Опробовал я этот метод - не работает.
Ищу дальше.

Оффлайн Moroz

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 3
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Tie::CSV не работает с русским языком?
« Ответ #3 : 04 Сентября 2007, 22:49:25 »
Нашел решение здесь
http://pavel.ammosov.ru/ruperl/ru-perl-faq-9.html

Отказался от использования Tie::Handle::CSV в пользу Text::CSV_XS.
Главное для работы с русскими буквами - конструктору new() передать параметр \'binary\'=>1.

Всем спасибо за внимание!

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28