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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой 
:(
    Опции темы
Гость_Alex
  Дата 24.4.2005, 07:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Возможно ли нормально прочитать русскоязычные данные из *.xls не используя Spreadsheet::ParseExcel::FmtUnicode?
И если да, то как?
Заранее благодарен.
  Вверх
fedor-semakov
Дата 26.4.2005, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А в чем там проблема их прочитать то?
Они там в юникоде, берешь делаешь функцию перевода из юникода, и прогоняешь текст через нее.

Функцию можно самому написать, а можно выдрать из какого либо модуля, потому что зачем велосипед изобретать. smile


PM MAIL   Вверх
Гость_Alex
Дата 26.4.2005, 21:49 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Обыскал все что мог, нигде. Возможно просто пока не повезло.
Если не трудно, закиньте кусок кода. Можно просто без дополнительной обработки и редакции из какой-нибудь проги. Я там сам обработаю (надеюсь на это).
Просто пока ничего не нашел подобного.
  Вверх
fedor-semakov
Дата 27.4.2005, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотри сорц этого модуля например.

http://cpan.uwinnipeg.ca/htdocs/Unicode-Li...icode/Lite.html

Тебе нужно utf16 to cp1251
PM MAIL   Вверх
Guest
Дата 27.4.2005, 06:09 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо за ссылку
Остается только надеяться, что на серваке мне установят модуль Unicode::Lite smile
А существуют ли топорные способы перекодирования (без использования дополнительных модулей)?
  Вверх
Sadok
Дата 27.4.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

sub utf8_to_win1251 {
    
    my $str = shift;
    
my %chars = (
"\xD0\xB0"=>"а", "\xD0\x90"=>"А",
"\xD0\xB1"=>"б", "\xD0\x91"=>"Б",
"\xD0\xB2"=>"в", "\xD0\x92"=>"В",
"\xD0\xB3"=>"г", "\xD0\x93"=>"Г",
"\xD0\xB4"=>"д", "\xD0\x94"=>"Д",
"\xD0\xB5"=>"е", "\xD0\x95"=>"Е",
"\xD1\x91"=>"ё", "\xD0\x81"=>"Ё",
"\xD0\xB6"=>"ж", "\xD0\x96"=>"Ж",
"\xD0\xB7"=>"з", "\xD0\x97"=>"З",
"\xD0\xB8"=>"и", "\xD0\x98"=>"И",
"\xD0\xB9"=>"й", "\xD0\x99"=>"Й",
"\xD0\xBA"=>"к", "\xD0\x9A"=>"К",
"\xD0\xBB"=>"л", "\xD0\x9B"=>"Л",
"\xD0\xBC"=>"м", "\xD0\x9C"=>"М",
"\xD0\xBD"=>"н", "\xD0\x9D"=>"Н",
"\xD0\xBE"=>"о", "\xD0\x9E"=>"О",
"\xD0\xBF"=>"п", "\xD0\x9F"=>"П",
"\xD1\x80"=>"р", "\xD0\xA0"=>"Р",
"\xD1\x81"=>"с", "\xD0\xA1"=>"С",
"\xD1\x82"=>"т", "\xD0\xA2"=>"Т",
"\xD1\x83"=>"у", "\xD0\xA3"=>"У",
"\xD1\x84"=>"ф", "\xD0\xA4"=>"Ф",
"\xD1\x85"=>"х", "\xD0\xA5"=>"Х",
"\xD1\x86"=>"ц", "\xD0\xA6"=>"Ц",
"\xD1\x87"=>"ч", "\xD0\xA7"=>"Ч",
"\xD1\x88"=>"ш", "\xD0\xA8"=>"Ш",
"\xD1\x89"=>"щ", "\xD0\xA9"=>"Щ",
"\xD1\x8A"=>"ъ", "\xD0\xAA"=>"Ъ",
"\xD1\x8B"=>"ы", "\xD0\xAB"=>"Ы",
"\xD1\x8C"=>"ь", "\xD0\xAC"=>"Ь",
"\xD1\x8D"=>"э", "\xD0\xAD"=>"Э",
"\xD1\x8E"=>"ю", "\xD0\xAE"=>"Ю",
"\xD1\x8F"=>"я", "\xD0\xAF"=>"Я",
);

    $str =~ s|([\xD0\xD1].)|$chars{$1}|sg;
    
    return $str;
}

PM   Вверх
Гость_Alex
Дата 28.4.2005, 07:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо
Сейчас попробую
  Вверх
Гость_Alex
Дата 13.6.2005, 17:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











use Spreadsheet::ParseExcel::FmtUnicode поставили, ряд проблем автоматически исчез, но есть одна которую пока не могу решить

Парсю *.xls файл, но вместо колонок с

159,84 ;4 523,47 ;12 мес.
157,68 ;4 462,34 ;12 мес.
261,36 ;7 396,49 ;12 мес.

получаю

15..8 р .;4,52..4 р .;12 мес.
15..6 р .;4,46..3 р .;12 мес.
26..3 р .;7,39..4 р .;12 мес.

Не могу понять, в чем загвоздка.
На всякий случай приведу код

Код

#!/usr/bin/perl
print "Content-Type: text/html\n\n";

use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::FmtUnicode;
my $oFmtJ = Spreadsheet::ParseExcel::FmtUnicode->new(Unicode_Map=>'CP1251');
my $oExcel = new Spreadsheet::ParseExcel;
my $oBook = $oExcel->Parse('d:/eee.xls',$oFmtJ);
my $oWkS = $oBook->{Worksheet}[0];
open (FFF,'>d:/eee.csv');
for(my $iR = 0; $iR <= 30; $iR++)
 {
   my $htm='';
   for(my $iC = 3; defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ; $iC++)
    { $oWkC = $oWkS->{Cells}[$iR][$iC];
      if ($oWkC) {$htm.= $oWkC->Value.';'} else {$htm.= ';'};
    }
   print FFF $htm,"\n";
 }
close FFF;


Единственное на что наткнулся - внутри *.xls файла есть строка charset="koi8-r".
Подставлял koi8-r вместо CP1251 все равно ерунда.

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


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

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


 




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


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

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