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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировками. Регулярные выражения. UTF-8. 
:(
    Опции темы
antananarivu
Дата 29.6.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



error from Perl function "saveattachments": Undefined subroutine &main::dumper called at line 323.
если делаю return Dump($sp); - выкидывает с сервера. 
PM MAIL   Вверх
ginnie
Дата 29.6.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



antananarivu, вы Dumper() с большой буквы написали, а то в сообщении об ошибке с маленькой?


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
antananarivu
Дата 29.6.2010, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Dumper($sp);

return - визуально пустая строка

вывел в файл:

Это сообщение отредактировал(а) antananarivu - 29.6.2010, 15:22

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  VAR.JPG 60,45 Kb
PM MAIL   Вверх
antananarivu
Дата 30.6.2010, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Как вообще получить строку вот в таком виде?
$VAR1 = "\x{41f}\x{43e} \x{434}\x{43e}\x{43a}\x{443}\x{43c}\x{435}\x{43d}\x{442}\x{443} \x{421}\x{43d}\x{44f}\x{442}\x{438}\x{435} \x{437}\x{430}\x{43a}\x{430}\x{437}\x{430} \x{2116} 10125 \x{43e}\x{442} 07.06.2010 17:12:20 \x{441}\x{43d}\x{44f}\x{442}\x{44b} \x{441}\x{43b}\x{435}\x{434}\x{443}\x{44e}\x{449}\x{438}\x{435}  \x{43f}\x{43e}\x{437}\x{438}\x{446}\x{438}\x{438}....  
PM MAIL   Вверх
arto
Дата 30.6.2010, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



print Dumper \$str;
PM MAIL ICQ   Вверх
antananarivu
Дата 30.6.2010, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А если избавится от регулярного выражения вообще и написать что то типа:

 
Код

IF @c >='A' and @c<='Z'  or @c>='А' and @c<='Я' or @c>='0' and @c<='9'   SELECT @s = @s + @c

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


Новичок



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

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



Вот так до и после. Вывел через return Dumper ($sp) - переменная типа bytea

"$VAR1 = '\320\237\320\276 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\203 \320\241\320\275\321\217\321\202\320\270\320\265 \320\267\320\260\320\272\320\260\320\267\320\260 \342\204\226 10\302\240125 \320\276\321\202 07.06.2010 17:12:20 \321\201\320\275\321\217\321\202\321\213 \321\201\320\273\320\265\320\264\321\203\321\216\321\211\320\270\320\265  \320\277\320\276\320\267\320\270\321\206\320\270\320\270....  \012';\012"

"$VAR1 = '\320\237\320\276 \320\264\320\276\320\272\321\203\320\274\320\265\320\275\321\202\321\203 \320\241\320\275\321\217\321\202\320\270\320\265 \320\267\320\260\320\272\320\260\320\267\320\260 \342\204\226 10\240125 \320\276\321\202 07.06.2010 17:12:20 \321\201\320\275\321\217\321\202\321\213 \321\201\320\273\320\265\320\264\321\203\321\216\321\211\320\270\320\265  \320\277\320\276\320\267\320\270\321\206\320\270\320\270....  ';\012"

то есть честно удаляет \302 - видимо неразрывный пробел и \012 в конце.
тогда я вообще не понимаю в чем причина

Это сообщение отредактировал(а) antananarivu - 30.6.2010, 11:28
PM MAIL   Вверх
ginnie
Дата 30.6.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

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



antananarivu, обратите внимание, что у Вас строка в UTF8 и символ, который Вы хотите удалить \302\240, а удаляется только его часть \302.

Добавлено через 3 минуты и 7 секунд
Покажите строчку после обработки этим регулярным выражением

Код

$sp =~ s{[^ \p{S}\p{L}\p{N}\p{P}]}{}g;



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
antananarivu
Дата 1.7.2010, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема решена. Всем спасибо (особенно ginnie). 
Честно говоря так и не понял, что делал неправильно.. но главное заработало. Помогло следующее:

Код

use utf8;
use MIME::Words qw(:all); 
use Convert::Cyrillic;  
use Lingua::DetectCharset;


my $ttr = "=?koi8-r?B?8NLJyM/EIDUyMTM5OSDEzNEgIOLBztrByiDP1CAyMDEwLjA2LjA3IA==?=
    =?koi8-r?B?LSAxMzozOSAgKDYyKQ==?=
";
my $ttr2 = decode_mimewords($ttr);
my $charset = Lingua::DetectCharset::Detect($ttr2);
my $ttr3 = Convert::Cyrillic::cstocs($charset, 'UTF8', $ttr2);
utf8::decode($ttr3);
utf8::upgrade($ttr3);



Это сообщение отредактировал(а) antananarivu - 1.7.2010, 10:08
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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