![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| antananarivu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
А русские символы в регулярном выражении в скрипте у Вас в какой кодировке?
Вы меня переоцениваете. Не знаю. Учитывая, что в самом начале кода стоит 'use bytes' - не знаю. Dump($sp) - если на экране - пустоту. не отображает. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
antananarivu, чтобы работало правильно, файл должен быть в кодировке utf8 (указывается в редакторе), и нужно использовать там-же, где no bytes; - use utf8;
"На экране" подразумевается в консоли? Команда perl -MDevel::Peek -e 'Dump(12)' у меня выводит
а у Вас? -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| antananarivu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
Весь текст программы. Оставил, то что относится к $sp. Добавлено @ 12:20 Так... консоли у меня нет. Я сижу через pgAdmin и резалты вижу либо через 'return $sp' в результатах вывода. Либо записывая переменную в текстовый файл. как указать в редакторе что файл в utf8? uses bytes я оставил, потому что при конкатенации строк часто получались иероглифы. и этот рецепт я нашел где-то на форуме. Это сообщение отредактировал(а) antananarivu - 29.6.2010, 12:22 |
|||
|
||||
| antananarivu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
пробовал. Это сообщение отредактировал(а) antananarivu - 29.6.2010, 12:35 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
antananarivu, вот Вам вариант
Это сообщение отредактировал(а) ginnie - 29.6.2010, 12:50 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
странно, у меня работает:
$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} 10\x{a0}125 \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}.... "; $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}.... "; первое -- до, второе -- после. \x{a0} удалено, \x{2116} осталось. |
|||
|
||||
| antananarivu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
так? если так то ошибка такая: "ERROR: error from Perl function "saveattachments": Can't use string ("По документу Снят") as an ARRAY ref while "strict refs" in use at line 119." line 119 "my $utf8_str = decode($spasss->[1], $spasss->[0]);" |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
antananarivu,
от того, что Вы написали отличается контекстом: в моем варианте контекст списочный, а не скалярный, как у Вас, из-за этого ошибка, т.к. decode_mimewords() в списочном и скалярном контекстах возвращает разные результаты. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| antananarivu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
ладно. по-моему это безнадежно. то же самое
до этого $sp =~ s{[^ \p{S}\p{L}\p{N}\p{P}]}{}g; return $sp работает отлично после нет. Добавлено через 9 минут и 16 секунд при этом длина строки если брать length меняется на 2 байта. 139 - 137. то есть удалить то она символ удаляет |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
antananarivu, если не сложно, пишите, чтобы было понятно не только Вам, но и остальным. Что именно у Вас не работает?
У меня в тестовом примере в консоль выводит Накладная#56775_НЕКСТЛАЙН.xls и Dump() тоже никаких лишних символов не показывает:
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| antananarivu |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
Что-то с русскими символами...
потому что если убрать русские буквы и оставить например:
то все корректно отображается (русские буквы конечно оказываются удалены, что очевидно). |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
antananarivu, где у Вас проблемы с русскими буквами? в базе? база какую кодировку использует?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| antananarivu |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 25.6.2010 Репутация: нет Всего: нет |
Закроем тему. Не могу корректно объяснить. На том уровне, на котором я мог объяснить, я объяснил:
return $sp Вывод данных: "По документу Снятие заказа № 10 125 от 07.06.2010 17:12:20 сняты следующие позиции...."
return $sp Вывод данных: (визуально пустая строка) ТЕПЕРЬ!!! Убираем символ стоящий между 10 и 125 имеем:
return $sp Вывод данных: "По документу Снятие заказа № 10125 от 07.06.2010 17:12:20 сняты следующие позиции...."
return $sp Вывод данных: "По документу Снятие заказа № 10125 от 07.06.2010 17:12:20 сняты следующие позиции...." Это сообщение отредактировал(а) antananarivu - 29.6.2010, 14:17 |
||||||||
|
|||||||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
antananarivu, покажите еще вывод функции Dumper() для второго случая, когда выводится пустая строка
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
antananarivu,
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |