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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Perl + twitter + русский язык, проблема с кодировкой 
:(
    Опции темы
materiya
Дата 9.6.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(arto @ 9.6.2011,  16:29)
в какой кодировке у вас строка 'новости'?

подозреваю что в 1251
PM MAIL   Вверх
arto
Дата 9.6.2011, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



отличный ответ от разработчика! smile

переведите его в utf8, perldoc Encode.
либо вбейте его сразу в utf8, perldoc utf8
PM MAIL ICQ   Вверх
materiya
Дата 9.6.2011, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(arto @ 9.6.2011,  17:02)


переведите его в utf8, perldoc Encode.
либо вбейте его сразу в utf8, perldoc utf8

блиииииииииииииииииин. вообще оказалось элементарно. нужно было всего навсего добавит прагму utf8 

Код

use utf8;
my $r = $mt->search({q=>'новости',since_id=>$conf[0],rpp=>100});
no utf8;



большое спасибо всем. в особенности, ARTO. очень помогли
PM MAIL   Вверх
ky0x5a
Дата 16.10.2011, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня похожа проблема возникла при самом твитинге. В кокою бы я кодировку не переводил бы данные, на твитере получается абра-кодабра. Предварительно перед тем как сделать $o->update использовал Text::Iconv, Encode::from_to (с ним вообще ошибки иногда), но вот если я делаю пост таким образом $o->update("\x{410}\x{NNN}"); в этом случаи работает и на твите нормальная кирилица. При включении прагмы utf8 у меня ошибки типа:

Malformed UTF-8 character (unexpected non-continuation byte 0xd2, immediately after start byte 0xcf) at tvitter.pl line 98.
Malformed UTF-8 character (unexpected non-continuation byte 0xcc, immediately after start byte 0xd2) at tvitter.pl line 98.
Malformed UTF-8 character (unexpected non-continuation byte 0xcf, immediately after start byte 0xcc) at tvitter.pl line 98.


Как мне решить мои проблемы, ибо уже второй день не выходит!

ps: Локаль у меня koi8-r/linux, данные тоже в файле в koi8-r

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


Новичок



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

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



Вот кусок кода

Код

#print "$r->{created_at}\n  $r->{user}{screen_name} => $resl\n";
my $obj = Text::Iconv->new("koi8-r", "utf8");
my $str = $obj->convert($keys{$k}[0]);
utf8::upgrade($str);        
my $msg = "\@$r->{user}{screen_name} $str";
print "$msg";    
$nt->update({status => $msg});


Может дело в самом Net::Twitter-e ???

Вот как выглядит в твите : user posted image


Это сообщение отредактировал(а) ky0x5a - 16.10.2011, 19:23
PM MAIL   Вверх
ky0x5a
Дата 16.10.2011, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Посмотрев форум, а именно  utf2win написал сие функцию для перевода koi8r в utf8, тер на твитере все норма отображается.

Коды символов

Код

sub str2utf
{
    my ( $str, $newstr ) = shift;
    my %koi =
    (
        225 => "\x{410}", 226 => "\x{411}", 247 => "\x{412}", 231 => "\x{413}", 228 => "\x{414}",
        229 => "\x{415}", 179 => "\x{401}", 246 => "\x{416}", 250 => "\x{417}", 233 => "\x{418}",
        234 => "\x{419}", 235 => "\x{41A}", 236 => "\x{41B}", 237 => "\x{41C}", 238 => "\x{41D}",
        239 => "\x{41E}", 240 => "\x{41F}", 242 => "\x{420}", 243 => "\x{421}", 244 => "\x{422}",
        245 => "\x{423}", 230 => "\x{424}", 232 => "\x{425}", 227 => "\x{426}", 254 => "\x{427}",
        251 => "\x{428}", 253 => "\x{429}", 255 => "\x{42A}", 249 => "\x{42B}", 248 => "\x{42C}",
        252 => "\x{42D}", 224 => "\x{42E}", 241 => "\x{42F}", 193 => "\x{430}", 194 => "\x{431}",
        215 => "\x{432}", 199 => "\x{433}", 196 => "\x{434}", 197 => "\x{435}", 163 => "\x{451}",
        214 => "\x{436}", 218 => "\x{437}", 201 => "\x{438}", 202 => "\x{439}", 203 => "\x{43A}",
        204 => "\x{43B}", 205 => "\x{43C}", 206 => "\x{43D}", 207 => "\x{43E}", 208 => "\x{43F}",
        210 => "\x{440}", 211 => "\x{441}", 212 => "\x{442}", 213 => "\x{443}", 198 => "\x{444}",
        200 => "\x{445}", 195 => "\x{446}", 222 => "\x{447}", 219 => "\x{448}", 221 => "\x{449}",
        223 => "\x{44A}", 217 => "\x{44B}", 216 => "\x{44C}", 220 => "\x{44D}", 192 => "\x{44E}",
        209 => "\x{44F}"
    );
    
    foreach my $w ( split //, $str )
    {
        my $dec = ord($w);
        if( $koi{$dec} ) { $newstr .= $koi{$dec}; }
        else { $newstr .= $w; }
    }
    return $newstr;
}

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


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

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


 




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


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

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