![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
подскажите пожалуйста, как в UTF-8 консоли заставить работать uc()/lc() ?
заранее благодарю за ответ. Это сообщение отредактировал(а) mastercz - 11.1.2010, 08:25 |
|||
|
||||
| krypt3r |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
Если будет появляться ошибка Wide character in print..., то добавьте, например, строку
|
||||
|
|||||
| mastercz |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
krypt3r а нельзя как нибудь без
я, к сожалению не понимаю, зачем она здесь, на как-то костыль напоминает. Возможно я ошибаюсь ? Возможно есть другие функции заменяющие uc/lc для UTF-8... P.S >Да кстати, perl 5.8.8, UTF-8 local |
||||||||
|
|||||||||
| krypt3r |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Еще как вариант
Тогда патчить stdout не нужно. |
|||
|
||||
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
что-то не догоняю. подскажите пожалуйста, как быть быть с входными данными. Флаг UTF8 из аргументов не ставиться, как правильно заставить заставить считать перл, что к нему пришли на входе данные в UTF8.
Заранее благодарен за помощь. Вот тестовый пример..
|
|||
|
||||
| krypt3r |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
Если данные в базе в UTF-8, то попробуйте после коннекта провести запрос
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Или такой вариант:
|
|||
|
||||
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
Ту дело не в Базе Данных, строки к ней можно закомментировать. Проблема в том что, строка берущаяся в качестве аргумента без флага UTF8. В реальной задаче данные которые я подаю на вход WEB - скрипта, превращаются в не читаемую хрень еще до записи в базу. Думаю это не важно, но на всякий случай в реальной задаче это Apache2+ mod_perl2 + mason 1.39 + perl 5.10 |
|||
|
||||
| krypt3r |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
Эм, а это у вас что?
Наверно, предполагалось что-то типа
|
||||
|
|||||
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
|
|||
|
||||
| Pfailed |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
С точки зрения перла не аналогична. Первое - это срез массива, а второе элемент массива. use warnings об этом намекает. |
||||
|
|||||
| mastercz |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
Выходные кончились, возвращаюсь к задаче.
Чувствую себя полным бараном но пока не вижу решения даннаой проблемы :( Неужели ни у кого не работает Web-Perl скрипт полностью под UTF-8. Мне кажется задачка весьма тривиальна просто я чего-то не догоняю. Поделитесь пожалуйста опытом, как вы заставляете интерпретатор, понимать что из веб-морды пришли данные в UTF-8. Я предполагаю, если я усилием воли подниму флаг на переменную, то проблема исчезнет. Вот только, _utf8_on($arg); внутренняя функция, а как это сделать корректно, я не знаю. И еще, прагма use open qw /:std :utf8/; должна ИМХО работать и над STDIN и на STDOUT почему же в приведенном выше примере аргумент из командной строки не воспринимается как UTF-8. Для наглядности упрощаю вид вышеприведенного примера:
|
|||
|
||||
| krypt3r |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 359 Регистрация: 9.6.2009 Репутация: 2 Всего: 16 |
http://www.nestor.minsk.by/sr/2008/09/sr80902.html http://xpoint.ru/know-how/Perl/PodderzhkaUnicode Для юникодизации массива @ARGV запускайте интерпретатор с ключом -CA
Added: Так как этот ключ не работает в самом скрипте, то можно в BEGIN {...} прописать насильную установку utf8-флага для @ARGV - по дефолту у этого массива данный флаг отключен Это сообщение отредактировал(а) krypt3r - 25.1.2010, 09:19 |
||||
|
|||||
| mastercz |
|
||||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2008 Репутация: нет Всего: нет |
krypt3r, спасибо за помощь.
Web-скрипт вроде как отчасти заработал. Я использовал следующую настройку под html-mason
Плюс в настройках Apache2
Однако почему то DBI а именно $dbh->errstr выдает некорректный текст несмотря на
Получаю что-то вида
Хотя обычный поток данных от DBI идет как нужно. Да и еще, не врубаюсь почему вместо приведенной надстройки не работает прагма
|
||||||||||
|
|||||||||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |