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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Необрабатывается кириллица в запросе, Как правильно передать запрос в кириллиц 
:(
    Опции темы
bugmenot
Дата 10.7.2007, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть следующий код:
Код

#!/usr/bin/perl

use warnings;
use strict;
use Winamp::Control;
use Lyrics::Fetcher::LyricWiki;

    my $winamp = Winamp::Control->new( host => '127.0.0.1', port => 4800 );

    if( my $ver = $winamp->getversion )
    {
        my $str= $winamp->getcurrenttitle() if $winamp->isplaying();
        my ($artist, $song) = $str =~ /\.\s(.+?)\s-\s(.+)$/;
        print "$artist\n$song\n\n";
        print Lyrics::Fetcher::LyricWiki->fetch($artist, $song);
    }
    else
    {
        warn 'Unable to connect to winamp/httpQ';
    }

Если в переменные передается текст содержащий латинский шрифт - все работает, а если кириллица то нет.
Предполагаю что в модуле Lyrics::Fetcher::LyricWiki не предусмотрена работа с кириллицей, как можно попытаться решить проблему?
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
errr
Дата 10.7.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А что не работает конкретно? Что пишет?
PM MAIL   Вверх
bugmenot
Дата 10.7.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Конкретно нет вывода текста песни... скрипт ошибок не выдает, на сколько я понял просто не находит такую композицию и исполнителя т.к. запрос в кириллице криво обрабатывается.
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
KSURi
Дата 10.7.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Должно помочь:
Код

use encoding 'cp1251';



--------------------
Died at Life.pl line 21
PM Jabber   Вверх
bugmenot
Дата 11.7.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет не помогает... это я первое что сделал )
пишет
Код

500 Wide character in syswrite at C:/Perl/site/lib/Lyrics/Fetcher/LyricWiki.pm line 33

ps: и use encoding 'utf8'; на всякий случай попробовал тоже не помогает
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
amg
Дата 12.7.2007, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

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



Прагмы use encoding (и use utf8) здесь не помогут. Они для того, чтобы перл правильно понял текст скрипта, написанного в юникоде, и к данным отнощения не имеют. 
use Encode
PM MAIL   Вверх
bugmenot
Дата 12.7.2007, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

#!/usr/bin/perl

use warnings;
use strict;
use diagnostics;
use Encode 'decode', 'encode';
use Winamp::Control;
use Lyrics::Fetcher::LyricWiki;

    my $winamp = Winamp::Control->new( host => '127.0.0.1', port => 4800 );

    if( my $ver = $winamp->getversion )
    {
        my $str= $winamp->getcurrenttitle() if $winamp->isplaying();
        
        my ($artist, $song) = $str =~ /\.\s(.+?)\s-\s(.+)$/;
        my $artist_enc = encode('cp-1251', $artist);
        my $song_enc= encode('cp-1251', $song);
        print "$artist_enc\n$song_enc\n\n";
        print Lyrics::Fetcher::LyricWiki->fetch($artist_enc, $song_enc);
    }
    else
    {
        warn 'Unable to connect to winamp/httpQ';
    }


теперь выдает знаки вопроса из 
Код
print "$artist_enc\n$song_enc\n\n";


дальше по прежнему глухо.
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
shamber
Дата 12.7.2007, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



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


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

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


 




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


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

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