From sergiy.borodych at gmail.com Thu Jan 2 23:16:02 2014 From: sergiy.borodych at gmail.com (Sergiy Borodych) Date: Fri, 3 Jan 2014 09:16:02 +0200 Subject: [Kiev-pm] =?utf-8?b?0KDQtdC00LjRgNC10LrRgiDQsiBEYW5jZXIy?= In-Reply-To: References: Message-ID: Hello, 2013/12/18 TheAthlete > Здравствуйте! > Имеется вот такое автономное приложение на Dancer2: > > app.pl > > #!/usr/bin/env perl > use Dancer2; > > use Data::Section::Simple qw/get_data_section/; > use DBI; > use utf8; > > my $index = get_data_section('index.html'); > > # Settings > #--------------------- > set charset => "UTF-8"; > set serializer => 'JSON'; > #--------------------- > > get '/' => sub { 'hello' }; > > any ['get', 'post'] => '/login' => sub { > if (request->method() eq 'POST') { > my $username = param 'username'; > my $password = param 'password'; > > my $dbfile = 'mydb.db'; > my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","") or die > $DBI::errstr; > > my $statement = qq{SELECT id FROM users WHERE username=? and > password=?}; > > my $sth = $dbh->prepare($statement) or die $dbh->errstr; > my $rv = $sth->execute($username, $password) or die $sth->errstr; > > my ($userID) = $sth->fetchrow_array; > > if ($userID) { > redirect '/'; > } else { > if (request->is_ajax) { > response->content_type('application/json'); > return {error => 'username or password is wrong'}; > } > } > } > > return $index; > }; > > > dance; > > __DATA__ > @@ index.html > > > > > Very simple login using Perl, Lovely.IO, Ajax, JSON and > SQLite > href="http://www.blueprintcss.org/blueprint/screen.css" /> > href="http://www.blueprintcss.org/blueprint/plugins/buttons/screen.css" /> > > > > > > > > > > >
> >
>
> Enter information > >
>
>
class="text" size="20" />
>
>
class="text" size="20" />
>
> > >
>
>
> > > > Запускаю с помощью > $ plackup app.pl > > Подскажите пожайлуста, как сделать редирект на роут '/', чтобы на выходе > появилось 'hello': > get '/' => sub { 'hello' }; > > Сейчас никакого редиректа не происходит, хотя в лог пишется, что он прошел: > Не совсем понятно как проверяешь. По логам - да есть редирект. Покажи wget -O - http://localhost:3000/ > 127.0.0.1 - - [18/Dec/2013:14:01:41 +0200] "GET /login HTTP/1.1" 200 4694 > "-" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16" > 127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "POST /login HTTP/1.1" 302 0 " > http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) > Presto/2.12.388 Version/12.16" > 127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "GET / HTTP/1.1" 200 5 " > http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) > Presto/2.12.388 Version/12.16" > > Подскажите, в чем может быть проблема? > Посмотри (кажется твой случай) https://en.wikipedia.org/wiki/Post/Redirect/Get -- Sergiy Borodych ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From theathlet at yandex.ru Fri Jan 3 00:33:18 2014 From: theathlet at yandex.ru (TheAthlete) Date: Fri, 03 Jan 2014 10:33:18 +0200 Subject: [Kiev-pm] =?utf-8?b?0KDQtdC00LjRgNC10LrRgiDQsiBEYW5jZXIy?= In-Reply-To: References: Message-ID: Проблему уже решил, проблема была в том, что редирект проходит, но его не видно, т.к. запрос посылается через AJAX. Поэтому необходимо было перенаправление сделать с помощью JavaScript: $.post('/login', { "username": $('#username').val(), "password": $('#password').val() }, function(data, textStatus, jqXHR){ data.error ? $('#loginResult').text("data.error: " + data.error).addClass("error") : $(window).attr('location', '/'); }); > > Не совсем понятно как проверяешь. По логам - да есть редирект. > Покажи > wget -O - http://localhost:3000/ > > >> 127.0.0.1 - - [18/Dec/2013:14:01:41 +0200] "GET /login HTTP/1.1" 200 >> 4694 >> "-" "Opera/9.80 (X11; Linux x86_64) Presto/2.12.388 Version/12.16" >> 127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "POST /login HTTP/1.1" 302 0 >> " >> http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) >> Presto/2.12.388 Version/12.16" >> 127.0.0.1 - - [18/Dec/2013:14:01:49 +0200] "GET / HTTP/1.1" 200 5 " >> http://localhost:5000/login" "Opera/9.80 (X11; Linux x86_64) >> Presto/2.12.388 Version/12.16" >> >> Подскажите, в чем может быть проблема? >> > > Посмотри (кажется твой случай) > https://en.wikipedia.org/wiki/Post/Redirect/Get > > -- Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ From viacheslav.t at gmail.com Mon Jan 6 22:58:04 2014 From: viacheslav.t at gmail.com (vti) Date: Tue, 07 Jan 2014 08:58:04 +0200 Subject: [Kiev-pm] =?utf-8?b?0J7QtNC40L3QvdCw0LTRhtCw0YLRi9C5INCy0YvQv9GD?= =?utf-8?q?=D1=81=D0=BA_Pragmatic_Perl?= Message-ID: <52CBA57C.2030406@gmail.com> Выпуск 11 В этом номере: - От редактора: взгляд на 2013 г. - Впечатления от Saint Perl 5 - Про опыт разработки на Perl под Raspberry PI - Асинхронное программирование с IO::Async - Обход дерева директорий на Perl и Haskell (часть 1) - Обзор CPAN за декабрь 2013 г. - Интервью с Tokuhiro Matsuno - Perl Golf http://pragmaticperl.com From my.yarnik at yandex.ru Wed Jan 15 23:14:12 2014 From: my.yarnik at yandex.ru (my.yarnik at yandex.ru) Date: Thu, 16 Jan 2014 09:14:12 +0200 Subject: [Kiev-pm] utf8 Message-ID: <1863491816.20140116091412@yandex.ru> Доброе утро друзья, Долгое время бьюсь с кодировкой UTF-8, то одно не работает, то другое... на данный момент есть вот такое решение: use CGI qw/:standard/; use encoding 'utf8'; $dbh-do("set names utf8"); $dbh-{mysql_enable_utf8} = 1; Вроде бы как все работает, кроме отправки данных с формы, в таком случае в переменную попадает знак вопроса в черном ромбе. Ситуацию, вроде бы как может спасти атрибут в форме enctype="multipart/form-data", но ведь этот атрибут для передачи файлов, я же передаю текст. -- С уважением, Ярослав From vaneska.ru at gmail.com Wed Jan 15 23:39:30 2014 From: vaneska.ru at gmail.com (=?KOI8-R?B?6dfBziDzz8vPzM/X?=) Date: Thu, 16 Jan 2014 11:39:30 +0400 Subject: [Kiev-pm] utf8 In-Reply-To: <1863491816.20140116091412@yandex.ru> References: <1863491816.20140116091412@yandex.ru> Message-ID: Может проще использовать что-то типа Mojolicious вместо CGI? Или задача не позволяет? 16 января 2014 г., 11:14 пользователь написал: > Доброе утро друзья, > > Долгое время бьюсь с кодировкой UTF-8, то одно не работает, то > другое... > > на данный момент есть вот такое решение: > use CGI qw/:standard/; > use encoding 'utf8'; > $dbh-do("set names utf8"); > $dbh-{mysql_enable_utf8} = 1; > > Вроде бы как все работает, кроме отправки данных с формы, в таком > случае в переменную попадает знак вопроса в черном ромбе. > > Ситуацию, вроде бы как может спасти атрибут в форме > enctype="multipart/form-data", но ведь этот атрибут для передачи > файлов, я же передаю текст. > > -- > С уважением, > Ярослав > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > -- С уважением, Иван ----------- ???? ???----------- ??? ?????HTML ?? ?????hellip; URL: From roman.dev at gmail.com Wed Jan 15 23:43:33 2014 From: roman.dev at gmail.com (Roman Parshin) Date: Thu, 16 Jan 2014 08:43:33 +0100 Subject: [Kiev-pm] utf8 In-Reply-To: <1863491816.20140116091412@yandex.ru> References: <1863491816.20140116091412@yandex.ru> Message-ID: <52D78DA5.6070605@gmail.com> Здраствуйте! Я думаю, что ничего страшного, если с "multipart/form-data" будет передаваться только текст вместо текста с файлом. Обычно в формах поле для ввода файла - необязательное. Во-вторых - какая у вас кодировка ХТМЛ-страницы? Am 16.01.2014 08:14, schrieb my.yarnik at yandex.ru: > Доброе утро друзья, > > Долгое время бьюсь с кодировкой UTF-8, то одно не работает, то > другое... > > на данный момент есть вот такое решение: > use CGI qw/:standard/; > use encoding 'utf8'; > $dbh-do("set names utf8"); > $dbh-{mysql_enable_utf8} = 1; > > Вроде бы как все работает, кроме отправки данных с формы, в таком > случае в переменную попадает знак вопроса в черном ромбе. > > Ситуацию, вроде бы как может спасти атрибут в форме > enctype="multipart/form-data", но ведь этот атрибут для передачи > файлов, я же передаю текст. > -- Roman Parshin ✉ From nikolay.mishin at gmail.com Wed Jan 15 23:59:59 2014 From: nikolay.mishin at gmail.com (Mishin Nikolay) Date: Thu, 16 Jan 2014 11:59:59 +0400 Subject: [Kiev-pm] utf8 In-Reply-To: <52D78DA5.6070605@gmail.com> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> Message-ID: У меня в консоли были проблемы с utf8 ( https://github.com/mishin/gists/blob/master/g_and_p_trans.pl) в CGI ,думаю, все еще запущеннее use Encode qw(decode encode); use Term::Encoding qw(term_encoding); как я понимаю на каждом шаге 1)скрипт 2)output 3)web страница нужно понимать в какой кодировке у тебя данные и, когда ты это определишь, ты уже можешь их перекодировать к той кодировке, к которой нужно, хотелось бы еще на весь скрипт посмотреть, ну или минитест привести, чтобы можно было воспроизвести 16 января 2014 г., 11:43 пользователь Roman Parshin написал: > Здраствуйте! > > Я думаю, что ничего страшного, если с "multipart/form-data" будет > передаваться только текст вместо текста с файлом. Обычно в формах поле для > ввода файла - необязательное. > Во-вторых - какая у вас кодировка ХТМЛ-страницы? > > Am 16.01.2014 08:14, schrieb my.yarnik at yandex.ru: > > Доброе утро друзья, >> >> Долгое время бьюсь с кодировкой UTF-8, то одно не работает, то >> другое... >> >> на данный момент есть вот такое решение: >> use CGI qw/:standard/; >> use encoding 'utf8'; >> $dbh-do("set names utf8"); >> $dbh-{mysql_enable_utf8} = 1; >> >> Вроде бы как все работает, кроме отправки данных с формы, в таком >> случае в переменную попадает знак вопроса в черном ромбе. >> >> Ситуацию, вроде бы как может спасти атрибут в форме >> enctype="multipart/form-data", но ведь этот атрибут для передачи >> файлов, я же передаю текст. >> >> > > -- > Roman Parshin > ✉ > > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > -- С уважением, Николай Мишин моб.: +7(965) 117-26-01 ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From vaneska.ru at gmail.com Thu Jan 16 00:01:44 2014 From: vaneska.ru at gmail.com (=?KOI8-R?B?6dfBziDzz8vPzM/X?=) Date: Thu, 16 Jan 2014 12:01:44 +0400 Subject: [Kiev-pm] utf8 In-Reply-To: References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> Message-ID: Может поможет use CGI qw( -utf8 :standard ); -- С уважением, Иван ----------- ???? ???----------- ??? ?????HTML ?? ?????hellip; URL: From my.yarnik at yandex.ru Thu Jan 16 00:12:52 2014 From: my.yarnik at yandex.ru (my.yarnik at yandex.ru) Date: Thu, 16 Jan 2014 10:12:52 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> Message-ID: <1214983550.20140116101252@yandex.ru> > Может поможет > use CGI qw( -utf8 :standard ); ничего не изменилось. Если отключить #use encoding 'utf8'; данные с формы приходят правильные, но перестают работать: Регулярные выражения: - Регистр символов: - и print div('данные из формы CGI:',$test_form); на выводе: данные из формы CGI: формы From viacheslav.t at gmail.com Thu Jan 16 00:41:13 2014 From: viacheslav.t at gmail.com (vti) Date: Thu, 16 Jan 2014 10:41:13 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <1863491816.20140116091412@yandex.ru> References: <1863491816.20140116091412@yandex.ru> Message-ID: <52D79B29.8050402@gmail.com> On 01/16/2014 09:14 AM, my.yarnik at yandex.ru wrote: > Доброе утро друзья, > > Долгое время бьюсь с кодировкой UTF-8, то одно не работает, то > другое... > > на данный момент есть вот такое решение: > use CGI qw/:standard/; > use encoding 'utf8'; > $dbh-do("set names utf8"); > $dbh-{mysql_enable_utf8} = 1; > > Вроде бы как все работает, кроме отправки данных с формы, в таком > случае в переменную попадает знак вопроса в черном ромбе. > > Ситуацию, вроде бы как может спасти атрибут в форме > enctype="multipart/form-data", но ведь этот атрибут для передачи > файлов, я же передаю текст. > Этой информации явно недостаточно. Нужна html-страница, схема, прочие файлы, версия mysql. Подготовь приложение, которое можно запустить и првоерить. Да и это опечатка $dbh-do("set names utf8"); ? Минус там вместо ->. Кроме того, надо всегда помнить, что извне приходят байты, а внутри надо оперировать символами и таким образом правильно все перекодировать на граничных участках. Например, в консоль надо выводить байты. From 0body0 at rambler.ru Thu Jan 16 00:53:02 2014 From: 0body0 at rambler.ru (=?UTF-8?B?0JDQvdCw0YLQvtC70LjQuSDQk9GA0LjRiNCw0LXQsg==?=) Date: Thu, 16 Jan 2014 12:53:02 +0400 Subject: [Kiev-pm] utf8 In-Reply-To: <1214983550.20140116101252@yandex.ru> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> Message-ID: <52D79DEE.7050705@rambler.ru> Я вот так делал my $text = CGI->param('text'); utf8::decode( $text ); У меня работало. 16.01.2014 12:12, my.yarnik at yandex.ru пишет: >> Может поможет >> use CGI qw( -utf8 :standard ); > ничего не изменилось. > > Если отключить #use encoding 'utf8'; > данные с формы приходят правильные, но перестают работать: > Регулярные выражения: - > Регистр символов: - > и print div('данные из формы CGI:',$test_form); > на выводе: > данные из формы CGI: формы > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm From theathlet at yandex.ru Thu Jan 16 04:23:38 2014 From: theathlet at yandex.ru (TheAthlete) Date: Thu, 16 Jan 2014 14:23:38 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <1214983550.20140116101252@yandex.ru> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> Message-ID: Во-первых, лучше использовать use utf8; вместо use encoding 'utf8';, т.к. согласно http://perldoc.perl.org/encoding.html данная прагма в 5.18+ является deprecated. Плюс добавить прагму: use open qw/:std :utf8/; Итого, попробуйте заменить use CGI qw/:standard/; use encoding 'utf8'; на use open qw/:std :utf8/; use utf8; use CGI qw/:standard -utf8/; писал(а) в своём письме Thu, 16 Jan 2014 10:12:52 +0200: >> Может поможет >> use CGI qw( -utf8 :standard ); > > ничего не изменилось. > > Если отключить #use encoding 'utf8'; > данные с формы приходят правильные, но перестают работать: > Регулярные выражения: - > Регистр символов: - > и print div('данные из формы CGI:',$test_form); > на выводе: > данные из формы CGI: формы > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm -- Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ From koorchik at gmail.com Thu Jan 16 04:40:35 2014 From: koorchik at gmail.com (=?UTF-8?B?0JLQuNC60YLQvtGAINCi0YPRgNGB0LrQuNC5?=) Date: Thu, 16 Jan 2014 14:40:35 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> Message-ID: Коллеги, мне кажется, что разговор не в ту сторону зашел. Я полностью согласен с vti, что тут недостаточно информации, чтобы сделать какие-то стоящие выводы. Можно лишь посмотреть на проблема сверху: IN(bytes) ->APP( bytes->decode->chars->process->chars->encode->bytes ) -> OUT(bytes) Конечно, внутреннее представление символов в perl - utf8, но это для нас ничего не означет (на учитывать это - это нарушать инкапсуляцию) То есть, мы получаем bytes с какого-то источника (TCP-сокет,STDIN, файл), преобразовываем в символы, делаем обработку, и непосредственно перед отдачей наружу - делаем encode. Кодировки на входе и выходе не связаны между собой и не обязаны быть одинаковыми). 2014/1/16 TheAthlete : > Во-первых, лучше использовать use utf8; вместо use encoding 'utf8';, т.к. > согласно http://perldoc.perl.org/encoding.html > данная прагма в 5.18+ является deprecated. > Плюс добавить прагму: > > use open qw/:std :utf8/; > > Итого, попробуйте заменить > > > use CGI qw/:standard/; > use encoding 'utf8'; > > на > > use open qw/:std :utf8/; > use utf8; > use CGI qw/:standard -utf8/; > > писал(а) в своём письме Thu, 16 Jan 2014 10:12:52 > +0200: > > >>> Может поможет >>> use CGI qw( -utf8 :standard ); >> >> >> ничего не изменилось. >> >> Если отключить #use encoding 'utf8'; >> данные с формы приходят правильные, но перестают работать: >> Регулярные выражения: - >> Регистр символов: - >> и print div('данные из формы CGI:',$test_form); >> на выводе: >> данные из формы CGI: формы >> >> _______________________________________________ >> Kiev-pm mailing list >> Kiev-pm at pm.org >> http://mail.pm.org/mailman/listinfo/kiev-pm > > > > -- > Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/ > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm -- Viktor Turskyi http://webbylab.com http://koorchik.blogspot.com From my.yarnik at yandex.ru Thu Jan 16 05:09:40 2014 From: my.yarnik at yandex.ru (my.yarnik at yandex.ru) Date: Thu, 16 Jan 2014 15:09:40 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> Message-ID: <13710293427.20140116150940@yandex.ru> > Во-первых, лучше использовать use utf8; вместо use encoding 'utf8';, т.к. > согласно http://perldoc.perl.org/encoding.html > данная прагма в 5.18+ является deprecated. Спасибо > use open qw/:std :utf8/; > use utf8; > use CGI qw/:standard -utf8/; Вот как раз если добавлять :std, то ломаются данные из простой формы на данный момент рабочий вариант вот такой: use open qw/:utf8/; use utf8; use CGI qw/:standard -utf8/; Но у него есть мелкий недостаток, он не правильно выводит русское название файла при glob("*"). Можно конечно использовать костыль, предложенный vti, в виде Encode::decode('UTF-8', $_); Тем более, что русских файлов в принципе не желательно держать. Для тех кто хочет потестить (посмотреть): Пожалуйста http://www.ahost.com.ua/utf8/index.cgi FTP: admin_utf8 / utf8 http://77.120.116.161/myadmin admin_utf8 / utf8 From viacheslav.t at gmail.com Thu Jan 16 05:23:47 2014 From: viacheslav.t at gmail.com (vti) Date: Thu, 16 Jan 2014 15:23:47 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <13710293427.20140116150940@yandex.ru> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> Message-ID: <52D7DD63.9010000@gmail.com> On 01/16/2014 03:09 PM, my.yarnik at yandex.ru wrote: >> Во-первых, лучше использовать use utf8; вместо use encoding 'utf8';, т.к. >> согласно http://perldoc.perl.org/encoding.html >> данная прагма в 5.18+ является deprecated. > Спасибо > >> use open qw/:std :utf8/; >> use utf8; >> use CGI qw/:standard -utf8/; > Вот как раз если добавлять :std, то ломаются данные из простой формы > на данный момент рабочий вариант вот такой: > > use open qw/:utf8/; > use utf8; > use CGI qw/:standard -utf8/; > > Но у него есть мелкий недостаток, он не правильно выводит русское название > файла при glob("*"). > Можно конечно использовать костыль, предложенный vti, в виде > Encode::decode('UTF-8', $_); > Тем более, что русских файлов в принципе не желательно держать. > > Для тех кто хочет потестить (посмотреть): > Пожалуйста http://www.ahost.com.ua/utf8/index.cgi > FTP: admin_utf8 / utf8 > http://77.120.116.161/myadmin admin_utf8 / utf8 Перекодировка -- это не костыль. Процитирую свои изменения в тот файл: Рекомендации по UTF-8: 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); 2. glob возвращает файл в байтах, необходимо преобразовать в UTF-8: my $file = Encode::decode('UTF-8', $_); 3. при открытии файла необходимо сообщить, что мы хотим автоматически UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); 4. вместо use encoding 'utf-8' использовать use utf8; и только тогда, когда в исходном тексте программы есть UTF-8 символы (в данном случае есть) 5. с базой вижу есть вариант правильный (set names + mysql_enable_utf8), надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет каша потом) Сократить этот список можно используя utf8::all. From my.yarnik at yandex.ru Thu Jan 16 05:37:35 2014 From: my.yarnik at yandex.ru (my.yarnik at yandex.ru) Date: Thu, 16 Jan 2014 15:37:35 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <52D7DD63.9010000@gmail.com> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> <52D7DD63.9010000@gmail.com> Message-ID: <531002375.20140116153735@yandex.ru> Здравствуйте, vti. я конечно плохо знаю язык и в часности много чего не понимаю, к примеру. > Рекомендации по UTF-8: > 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); зачем писать это если оно итак хранится в UTF-8 и выводит в UTF-8 > 2. glob возвращает файл в байтах, необходимо преобразовать в UTF-8: my > $file = Encode::decode('UTF-8', $_); вот все вроде понятно, но "файл в байтах", это же к размеру относится а не к названию.... > 3. при открытии файла необходимо сообщить, что мы хотим автоматически > UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); что б не менять это везде вручную, я заменил на use open qw/:utf8/; эффект тот же самый. > 4. вместо use encoding 'utf-8' использовать use utf8; и только тогда, > когда в исходном тексте программы есть UTF-8 символы (в данном случае есть) понял, а еще понятней стало когда носом ткнули в доку где написано что оно может быть удалено > 5. с базой вижу есть вариант правильный (set names + mysql_enable_utf8), > надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет каша потом) тут я экспереметирую, поэтому и создал 2 базы: 1. utf c полями утф и вин 2. вин с полями утф и вин по сути все равно что использовать, самое главное обьявить при подключении к базе $dbh->do("set names utf8"); $dbh->{mysql_enable_utf8} = 1; > Сократить этот список можно используя utf8::all. не слышал о таком еще.. С уважением, Ярослав From ganellon at gmail.com Thu Jan 16 05:47:49 2014 From: ganellon at gmail.com (Denis Sokolovsky) Date: Thu, 16 Jan 2014 15:47:49 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <52D7DD63.9010000@gmail.com> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> <52D7DD63.9010000@gmail.com> Message-ID: Вставлю і я свої 5 копійок: utf8::encode/decode нічого не перекодовують, а просто помічають скаляр як такий що містить не байти, а символи. Це дозволяє perl відповідно працювати з такими скалярами. Може такий приклад трохи прояснить ситуацію: $ perl -MDevel::Peek -e '$x = "фів"; Dump($x); utf8::decode($x); Dump($x)' SV = PV(0x1ceed80) at 0x1d0d4b8 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 CUR = 6 LEN = 16 SV = PV(0x1ceed80) at 0x1d0d4b8 REFCNT = 1 FLAGS = (POK,pPOK,UTF8) PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 [UTF8 "\x{444}\x{456}\x{432}"] CUR = 6 LEN = 16 Відповідно ці функції відмінно лягають в процес описаний Турським: на вході для отримання з байтів символів викоикаємо decode, на виході для того щоб віддавати байти: encode. Додаткові опції, назразок того самого :utf8 для open просто автоматизують данну операцію. -- Denis Sokolovsky On Jan 16, 2014 3:24 PM, "vti" wrote: > On 01/16/2014 03:09 PM, my.yarnik at yandex.ru wrote: > >> Во-первых, лучше использовать use utf8; вместо use encoding 'utf8';, т.к. >>> согласно http://perldoc.perl.org/encoding.html >>> данная прагма в 5.18+ является deprecated. >>> >> Спасибо >> >> use open qw/:std :utf8/; >>> use utf8; >>> use CGI qw/:standard -utf8/; >>> >> Вот как раз если добавлять :std, то ломаются данные из простой формы >> на данный момент рабочий вариант вот такой: >> >> use open qw/:utf8/; >> use utf8; >> use CGI qw/:standard -utf8/; >> >> Но у него есть мелкий недостаток, он не правильно выводит русское >> название >> файла при glob("*"). >> Можно конечно использовать костыль, предложенный vti, в виде >> Encode::decode('UTF-8', $_); >> Тем более, что русских файлов в принципе не желательно держать. >> >> Для тех кто хочет потестить (посмотреть): >> Пожалуйста http://www.ahost.com.ua/utf8/index.cgi >> FTP: admin_utf8 / utf8 >> http://77.120.116.161/myadmin admin_utf8 / utf8 >> > > Перекодировка -- это не костыль. Процитирую свои изменения в тот файл: > > Рекомендации по UTF-8: > 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); > 2. glob возвращает файл в байтах, необходимо преобразовать в UTF-8: my > $file = Encode::decode('UTF-8', $_); > 3. при открытии файла необходимо сообщить, что мы хотим автоматически > UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); > 4. вместо use encoding 'utf-8' использовать use utf8; и только тогда, > когда в исходном тексте программы есть UTF-8 символы (в данном случае есть) > 5. с базой вижу есть вариант правильный (set names + mysql_enable_utf8), > надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет каша потом) > > Сократить этот список можно используя utf8::all. > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From viacheslav.t at gmail.com Thu Jan 16 05:55:14 2014 From: viacheslav.t at gmail.com (vti) Date: Thu, 16 Jan 2014 15:55:14 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <531002375.20140116153735@yandex.ru> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> <52D7DD63.9010000@gmail.com> <531002375.20140116153735@yandex.ru> Message-ID: <52D7E4C2.5070303@gmail.com> On 01/16/2014 03:37 PM, my.yarnik at yandex.ru wrote: > Здравствуйте, vti. > > я конечно плохо знаю язык и в часности много чего не понимаю, к > примеру. > >> Рекомендации по UTF-8: >> 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); > зачем писать это если оно итак хранится в UTF-8 и выводит в UTF-8 > Я имел в виду, что по сети все строки передаются как байты, а не как символы, т.е. один символ может занимать несколько байт. Таким образом, чтобы правильно работать с символами, надо строку пришедшую изве из байтового представления преобразовать в символьное. И, наоборот, когда передаем данные, необходимо из строки все преобразовать в байты. my $bytes = read_from_socket(); my $string = Encode::decode('UTF-8', $bytes); write_to_socket(Encode::encode('UTF-8', $string); >> 2. glob возвращает файл в байтах, необходимо преобразовать в UTF-8: my >> $file = Encode::decode('UTF-8', $_); > вот все вроде понятно, но "файл в байтах", это же к размеру относится > а не к названию.... glob возвращает данные в байтовом представлении, потому как исторически работало только с ASCII кодировкой. В нашем случае возвращается UTF-8, который необходимо преобразовать в строку, чтобы правильно с ней работать. > >> 3. при открытии файла необходимо сообщить, что мы хотим автоматически >> UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); > что б не менять это везде вручную, я заменил на > use open qw/:utf8/; > эффект тот же самый. Да, можно и так. >> 4. вместо use encoding 'utf-8' использовать use utf8; и только тогда, >> когда в исходном тексте программы есть UTF-8 символы (в данном случае есть) > понял, а еще понятней стало когда носом ткнули в доку где написано что > оно может быть удалено Часто use utf8; пихают везде, даже не понимая что оно делает. Поэтому я и акцентировал на этом. >> 5. с базой вижу есть вариант правильный (set names + mysql_enable_utf8), >> надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет каша потом) > тут я экспереметирую, поэтому и создал 2 базы: > 1. utf c полями утф и вин > 2. вин с полями утф и вин > по сути все равно что использовать, самое главное обьявить при > подключении к базе > $dbh->do("set names utf8"); > $dbh->{mysql_enable_utf8} = 1; > >> Сократить этот список можно используя utf8::all. > не слышал о таком еще.. > > С уважением, > Ярослав > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm From viacheslav.t at gmail.com Thu Jan 16 05:57:10 2014 From: viacheslav.t at gmail.com (vti) Date: Thu, 16 Jan 2014 15:57:10 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> <52D7DD63.9010000@gmail.com> Message-ID: <52D7E536.4050605@gmail.com> Не надо путать utf8::* с Encode::*. Везде рекомендуют использовать Encode, а не вручную проставлять utf8-флаги. Кроме того используя 'UTF-8' в Encode, вместо 'utf8', utf-символы кое-как, но валидируются. On 01/16/2014 03:47 PM, Denis Sokolovsky wrote: > > Вставлю і я свої 5 копійок: utf8::encode/decode нічого не > перекодовують, а просто помічають скаляр як такий що містить не байти, > а символи. Це дозволяє perl відповідно працювати з такими скалярами. > Може такий приклад трохи прояснить ситуацію: > > $ perl -MDevel::Peek -e '$x = "фів"; Dump($x); utf8::decode($x); Dump($x)' > > SV = PV(0x1ceed80) at 0x1d0d4b8 > > REFCNT = 1 > > FLAGS = (POK,pPOK) > > PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 > > CUR = 6 > > LEN = 16 > > SV = PV(0x1ceed80) at 0x1d0d4b8 > > REFCNT = 1 > > FLAGS = (POK,pPOK,UTF8) > > PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 [UTF8 > "\x{444}\x{456}\x{432}"] > > CUR = 6 > > LEN = 16 > > > Відповідно ці функції відмінно лягають в процес описаний Турським: на > вході для отримання з байтів символів викоикаємо decode, на виході для > того щоб віддавати байти: encode. Додаткові опції, назразок того > самого :utf8 для open просто автоматизують данну операцію. > > -- > Denis Sokolovsky > > On Jan 16, 2014 3:24 PM, "vti" > wrote: > > On 01/16/2014 03:09 PM, my.yarnik at yandex.ru > wrote: > > Во-первых, лучше использовать use utf8; вместо use > encoding 'utf8';, т.к. > согласно http://perldoc.perl.org/encoding.html > данная прагма в 5.18+ является deprecated. > > Спасибо > > use open qw/:std :utf8/; > use utf8; > use CGI qw/:standard -utf8/; > > Вот как раз если добавлять :std, то ломаются данные из простой > формы > на данный момент рабочий вариант вот такой: > > use open qw/:utf8/; > use utf8; > use CGI qw/:standard -utf8/; > > Но у него есть мелкий недостаток, он не правильно выводит > русское название > файла при glob("*"). > Можно конечно использовать костыль, предложенный vti, в виде > Encode::decode('UTF-8', $_); > Тем более, что русских файлов в принципе не желательно держать. > > Для тех кто хочет потестить (посмотреть): > Пожалуйста http://www.ahost.com.ua/utf8/index.cgi > FTP: admin_utf8 / utf8 > http://77.120.116.161/myadmin admin_utf8 / utf8 > > > Перекодировка -- это не костыль. Процитирую свои изменения в тот файл: > > Рекомендации по UTF-8: > 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); > 2. glob возвращает файл в байтах, необходимо преобразовать в UTF-8: my > $file = Encode::decode('UTF-8', $_); > 3. при открытии файла необходимо сообщить, что мы хотим автоматически > UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); > 4. вместо use encoding 'utf-8' использовать use utf8; и только тогда, > когда в исходном тексте программы есть UTF-8 символы (в данном > случае есть) > 5. с базой вижу есть вариант правильный (set names + > mysql_enable_utf8), > надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет каша потом) > > Сократить этот список можно используя utf8::all. > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > > > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From alexey.vavilkin at gmail.com Fri Jan 17 03:20:49 2014 From: alexey.vavilkin at gmail.com (Alexey Vavilkin) Date: Fri, 17 Jan 2014 13:20:49 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <1863491816.20140116091412@yandex.ru> References: <1863491816.20140116091412@yandex.ru> Message-ID: Hi, если данные в форму вводятся из выпадающих списков (переменные, что передаются в страничке), то важен формат сохранения странички. она может быть Вами сохранена допустим в ASCII вместо UTF. Скорее всего в редакторе, которым пользуетесь, есть вариант "Сохранить как" с выбором кодировки. Если не можете разобраться с консолью на удаленном тазике - можно сделать dos2unix. Благодарю, Алексей. 2014/1/16 > Доброе утро друзья, > > Долгое время бьюсь с кодировкой UTF-8, то одно не работает, то > другое... > > на данный момент есть вот такое решение: > use CGI qw/:standard/; > use encoding 'utf8'; > $dbh-do("set names utf8"); > $dbh-{mysql_enable_utf8} = 1; > > Вроде бы как все работает, кроме отправки данных с формы, в таком > случае в переменную попадает знак вопроса в черном ромбе. > > Ситуацию, вроде бы как может спасти атрибут в форме > enctype="multipart/form-data", но ведь этот атрибут для передачи > файлов, я же передаю текст. > > -- > С уважением, > Ярослав > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ganellon at gmail.com Fri Jan 17 05:43:11 2014 From: ganellon at gmail.com (Denis Sokolovsky) Date: Fri, 17 Jan 2014 15:43:11 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: <52D7E536.4050605@gmail.com> References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> <52D7DD63.9010000@gmail.com> <52D7E536.4050605@gmail.com> Message-ID: Дозвольте не погодитись. По-перше я не бачив що б всюди рекомендували Encode замість utf8::encode/decode - вони по різному працюють і не можуть виключно заміщати одна одну. По-друге все залежить від мети. utf8::decode більш строгий до корректності utf8 строки ніж Encode, який пробує створити щось валідне будь-що. Натомість utf8::decode не вміє займатись перекодовуванням з будь-чого в utf8. Ось простий приклад, що демострує строгість utf8::decode: $ perl -MEncode -MDevel::Peek -e '$x = "фів\321"; print "Original\n"; Dump($x); print "Encode/utf8\n"; Dump(Encode::decode("UTF-8", $x)); utf8::decode($x); Dump($x);' Original SV = PV(0x92f7750) at 0x9313f08 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x930f5b8 "\321\204\321\226\320\262\321"\0 CUR = 7 LEN = 12 Encode/utf8 SV = PV(0x92f7d60) at 0x93935d0 REFCNT = 1 FLAGS = (TEMP,POK,pPOK,UTF8) PV = 0x939ae78 "\321\204\321\226\320\262\357\277\275"\0 [UTF8 "\x{444}\x{456}\x{432}\x{fffd}"] CUR = 9 LEN = 12 SV = PV(0x92f7750) at 0x9313f08 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x930f5b8 "\321\204\321\226\320\262\321"\0 CUR = 7 LEN = 12 Відповідно функція is_utf8 для результату Encode видає true, а після utf8::decode строка так і не стала utf8. Я погоджуюсь що для більшості веб задач варто все ж таки використовувати Encode (особливо коли мова стосується данних від користувача) тому що вона майже наглухо fail-proof, але то не є панацея. 2014/1/16 vti > Не надо путать utf8::* с Encode::*. Везде рекомендуют использовать > Encode, а не вручную проставлять utf8-флаги. Кроме того используя 'UTF-8' в > Encode, вместо 'utf8', utf-символы кое-как, но валидируются. > > > On 01/16/2014 03:47 PM, Denis Sokolovsky wrote: > > Вставлю і я свої 5 копійок: utf8::encode/decode нічого не перекодовують, > а просто помічають скаляр як такий що містить не байти, а символи. Це > дозволяє perl відповідно працювати з такими скалярами. Може такий приклад > трохи прояснить ситуацію: > > $ perl -MDevel::Peek -e '$x = "фів"; Dump($x); utf8::decode($x); Dump($x)' > > SV = PV(0x1ceed80) at 0x1d0d4b8 > > REFCNT = 1 > > FLAGS = (POK,pPOK) > > PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 > > CUR = 6 > > LEN = 16 > > SV = PV(0x1ceed80) at 0x1d0d4b8 > > REFCNT = 1 > > FLAGS = (POK,pPOK,UTF8) > > PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 [UTF8 > "\x{444}\x{456}\x{432}"] > > CUR = 6 > > LEN = 16 > > > Відповідно ці функції відмінно лягають в процес описаний Турським: на > вході для отримання з байтів символів викоикаємо decode, на виході для того > щоб віддавати байти: encode. Додаткові опції, назразок того самого :utf8 > для open просто автоматизують данну операцію. > > -- > Denis Sokolovsky > On Jan 16, 2014 3:24 PM, "vti" wrote: > >> On 01/16/2014 03:09 PM, my.yarnik at yandex.ru wrote: >> >>> Во-первых, лучше использовать use utf8; вместо use encoding 'utf8';, >>>> т.к. >>>> согласно http://perldoc.perl.org/encoding.html >>>> данная прагма в 5.18+ является deprecated. >>>> >>> Спасибо >>> >>> use open qw/:std :utf8/; >>>> use utf8; >>>> use CGI qw/:standard -utf8/; >>>> >>> Вот как раз если добавлять :std, то ломаются данные из простой формы >>> на данный момент рабочий вариант вот такой: >>> >>> use open qw/:utf8/; >>> use utf8; >>> use CGI qw/:standard -utf8/; >>> >>> Но у него есть мелкий недостаток, он не правильно выводит русское >>> название >>> файла при glob("*"). >>> Можно конечно использовать костыль, предложенный vti, в виде >>> Encode::decode('UTF-8', $_); >>> Тем более, что русских файлов в принципе не желательно держать. >>> >>> Для тех кто хочет потестить (посмотреть): >>> Пожалуйста http://www.ahost.com.ua/utf8/index.cgi >>> FTP: admin_utf8 / utf8 >>> http://77.120.116.161/myadmin admin_utf8 / utf8 >>> >> >> Перекодировка -- это не костыль. Процитирую свои изменения в тот файл: >> >> Рекомендации по UTF-8: >> 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); >> 2. glob возвращает файл в байтах, необходимо преобразовать в UTF-8: my >> $file = Encode::decode('UTF-8', $_); >> 3. при открытии файла необходимо сообщить, что мы хотим автоматически >> UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); >> 4. вместо use encoding 'utf-8' использовать use utf8; и только тогда, >> когда в исходном тексте программы есть UTF-8 символы (в данном случае >> есть) >> 5. с базой вижу есть вариант правильный (set names + mysql_enable_utf8), >> надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет каша потом) >> >> Сократить этот список можно используя utf8::all. >> _______________________________________________ >> Kiev-pm mailing list >> Kiev-pm at pm.org >> http://mail.pm.org/mailman/listinfo/kiev-pm >> > > > _______________________________________________ > Kiev-pm mailing listKiev-pm at pm.orghttp://mail.pm.org/mailman/listinfo/kiev-pm > > > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > > -- Denis Sokolovsky ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From viacheslav.t at gmail.com Fri Jan 17 05:52:26 2014 From: viacheslav.t at gmail.com (vti) Date: Fri, 17 Jan 2014 15:52:26 +0200 Subject: [Kiev-pm] utf8 In-Reply-To: References: <1863491816.20140116091412@yandex.ru> <52D78DA5.6070605@gmail.com> <1214983550.20140116101252@yandex.ru> <13710293427.20140116150940@yandex.ru> <52D7DD63.9010000@gmail.com> <52D7E536.4050605@gmail.com> Message-ID: <52D9359A.3000005@gmail.com> В документации идущей с Perl касамо Unicode: perluniintro, perlunicode везде только Encode. С остальным согласен. On 01/17/2014 03:43 PM, Denis Sokolovsky wrote: > Дозвольте не погодитись. По-перше я не бачив що б всюди рекомендували > Encode замість utf8::encode/decode - вони по різному працюють і не > можуть виключно заміщати одна одну. По-друге все залежить від мети. > utf8::decode більш строгий до корректності utf8 строки ніж Encode, > який пробує створити щось валідне будь-що. Натомість utf8::decode не > вміє займатись перекодовуванням з будь-чого в utf8. Ось простий > приклад, що демострує строгість utf8::decode: > > $ perl -MEncode -MDevel::Peek -e '$x = "фів\321"; print "Original\n"; > Dump($x); print "Encode/utf8\n"; Dump(Encode::decode("UTF-8", $x)); > utf8::decode($x); Dump($x);' > Original > SV = PV(0x92f7750) at 0x9313f08 > REFCNT = 1 > FLAGS = (POK,pPOK) > PV = 0x930f5b8 "\321\204\321\226\320\262\321"\0 > CUR = 7 > LEN = 12 > Encode/utf8 > SV = PV(0x92f7d60) at 0x93935d0 > REFCNT = 1 > FLAGS = (TEMP,POK,pPOK,UTF8) > PV = 0x939ae78 "\321\204\321\226\320\262\357\277\275"\0 [UTF8 > "\x{444}\x{456}\x{432}\x{fffd}"] > CUR = 9 > LEN = 12 > SV = PV(0x92f7750) at 0x9313f08 > REFCNT = 1 > FLAGS = (POK,pPOK) > PV = 0x930f5b8 "\321\204\321\226\320\262\321"\0 > CUR = 7 > LEN = 12 > > Відповідно функція is_utf8 для результату Encode видає true, а після > utf8::decode строка так і не стала utf8. Я погоджуюсь що для більшості > веб задач варто все ж таки використовувати Encode (особливо коли мова > стосується данних від користувача) тому що вона майже наглухо > fail-proof, але то не є панацея. > > > > 2014/1/16 vti > > > Не надо путать utf8::* с Encode::*. Везде рекомендуют использовать > Encode, а не вручную проставлять utf8-флаги. Кроме того используя > 'UTF-8' в Encode, вместо 'utf8', utf-символы кое-как, но > валидируются. > > > On 01/16/2014 03:47 PM, Denis Sokolovsky wrote: >> >> Вставлю і я свої 5 копійок: utf8::encode/decode нічого не >> перекодовують, а просто помічають скаляр як такий що містить не >> байти, а символи. Це дозволяє perl відповідно працювати з такими >> скалярами. Може такий приклад трохи прояснить ситуацію: >> >> $ perl -MDevel::Peek -e '$x = "фів"; Dump($x); utf8::decode($x); >> Dump($x)' >> >> SV = PV(0x1ceed80) at 0x1d0d4b8 >> >> REFCNT = 1 >> >> FLAGS = (POK,pPOK) >> >> PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 >> >> CUR = 6 >> >> LEN = 16 >> >> SV = PV(0x1ceed80) at 0x1d0d4b8 >> >> REFCNT = 1 >> >> FLAGS = (POK,pPOK,UTF8) >> >> PV = 0x1cfc5e0 "\321\204\321\226\320\262"\0 [UTF8 >> "\x{444}\x{456}\x{432}"] >> >> CUR = 6 >> >> LEN = 16 >> >> >> Відповідно ці функції відмінно лягають в процес описаний >> Турським: на вході для отримання з байтів символів викоикаємо >> decode, на виході для того щоб віддавати байти: encode. Додаткові >> опції, назразок того самого :utf8 для open просто автоматизують >> данну операцію. >> >> -- >> Denis Sokolovsky >> >> On Jan 16, 2014 3:24 PM, "vti" > > wrote: >> >> On 01/16/2014 03:09 PM, my.yarnik at yandex.ru >> wrote: >> >> Во-первых, лучше использовать use utf8; вместо use >> encoding 'utf8';, т.к. >> согласно http://perldoc.perl.org/encoding.html >> данная прагма в 5.18+ является deprecated. >> >> Спасибо >> >> use open qw/:std :utf8/; >> use utf8; >> use CGI qw/:standard -utf8/; >> >> Вот как раз если добавлять :std, то ломаются данные из >> простой формы >> на данный момент рабочий вариант вот такой: >> >> use open qw/:utf8/; >> use utf8; >> use CGI qw/:standard -utf8/; >> >> Но у него есть мелкий недостаток, он не правильно >> выводит русское название >> файла при glob("*"). >> Можно конечно использовать костыль, предложенный vti, в виде >> Encode::decode('UTF-8', $_); >> Тем более, что русских файлов в принципе не желательно >> держать. >> >> Для тех кто хочет потестить (посмотреть): >> Пожалуйста http://www.ahost.com.ua/utf8/index.cgi >> FTP: admin_utf8 / utf8 >> http://77.120.116.161/myadmin admin_utf8 / utf8 >> >> >> Перекодировка -- это не костыль. Процитирую свои изменения в >> тот файл: >> >> Рекомендации по UTF-8: >> 1. print должен быть в UTF-8: binmode(STDOUT, ":utf8"); >> 2. glob возвращает файл в байтах, необходимо преобразовать в >> UTF-8: my >> $file = Encode::decode('UTF-8', $_); >> 3. при открытии файла необходимо сообщить, что мы хотим >> автоматически >> UTF-8: open(FILE, '<:encoding(UTF-8)', "$file"); >> 4. вместо use encoding 'utf-8' использовать use utf8; и >> только тогда, >> когда в исходном тексте программы есть UTF-8 символы (в >> данном случае есть) >> 5. с базой вижу есть вариант правильный (set names + >> mysql_enable_utf8), >> надеюсь, что и в схеме стоит кодировка UTF-8 (иначе будет >> каша потом) >> >> Сократить этот список можно используя utf8::all. >> _______________________________________________ >> Kiev-pm mailing list >> Kiev-pm at pm.org >> http://mail.pm.org/mailman/listinfo/kiev-pm >> >> >> >> _______________________________________________ >> Kiev-pm mailing list >> Kiev-pm at pm.org >> http://mail.pm.org/mailman/listinfo/kiev-pm > > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > > > > > -- > Denis Sokolovsky > > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From andy at shitov.ru Mon Jan 27 14:17:20 2014 From: andy at shitov.ru (Andrew Shitov) Date: Mon, 27 Jan 2014 23:17:20 +0100 Subject: [Kiev-pm] YAPC::Europe 2014 Message-ID: Йоу, открылся сайт YAPC::Europe 2014: http://act.yapc.eu/ye2014/. Конференция пройдет в Софии 22-24 августа. Курица не птица, Болгария нам сницца :-) -- Andrew Shitov ______________________________________________________________________ andy at shitov.ru | http://shitov.ru From yu.pats at gmail.com Mon Jan 27 20:50:01 2014 From: yu.pats at gmail.com (Yury Pats) Date: Tue, 28 Jan 2014 07:50:01 +0300 Subject: [Kiev-pm] [Minsk-pm] YAPC::Europe 2014 In-Reply-To: References: Message-ID: Налетаем =) 2014-01-28 Andrew Shitov > Йоу, открылся сайт YAPC::Europe 2014: http://act.yapc.eu/ye2014/. > > Конференция пройдет в Софии 22-24 августа. Курица не птица, Болгария > нам сницца :-) > > -- > Andrew Shitov > ______________________________________________________________________ > andy at shitov.ru | http://shitov.ru > _______________________________________________ > Minsk-pm mailing list > Minsk-pm at pm.org > http://mail.pm.org/mailman/listinfo/minsk-pm > -- WBR, Yury Pats skype: yuripats cellular: +375 (29) 5870723 ----------- ���� ���----------- ��� �����HTML �� �����hellip; URL: From andy at shitov.ru Tue Jan 28 10:12:15 2014 From: andy at shitov.ru (Andrew Shitov) Date: Tue, 28 Jan 2014 19:12:15 +0100 Subject: [Kiev-pm] [SPb-pm] YAPC::Europe 2014 In-Reply-To: References: Message-ID: Мариан (организатор) обещает добавить через несколько дней. 2014-01-28 Denis Ibaev : > А кому-нибудь удалось купить билет по "80 Euro for early-bird > registrations (the option will expire four months before the > conference)"? В форме покупки стоит только цена в 99 евро. > > 28 января 2014 г., 2:17 пользователь Andrew Shitov написал: >> Йоу, открылся сайт YAPC::Europe 2014: http://act.yapc.eu/ye2014/. >> >> Конференция пройдет в Софии 22-24 августа. Курица не птица, Болгария >> нам сницца :-) > > -- > Денис Ибаев -- Andrew Shitov ______________________________________________________________________ andy at shitov.ru | http://shitov.ru From dev4 at ro.ru Wed Jan 29 08:18:10 2014 From: dev4 at ro.ru (Sergey) Date: Wed, 29 Jan 2014 19:18:10 +0300 Subject: [Kiev-pm] =?utf-8?q?=28no_subject=29?= Message-ID: <649566011.20140129191810@ro.ru> Всем привет. Тут иногда проскакивают вакансии, может имеется у кого-нибудь вакантная позиция для perl-разработчика на удаленку? Буду рад пообщаться... -- С уважением, mailto:dev4 at ro.ru -------------- next part -------------- An HTML attachment was scrubbed... URL: From dev4 at ro.ru Wed Jan 29 08:18:10 2014 From: dev4 at ro.ru (Sergey) Date: Wed, 29 Jan 2014 19:18:10 +0300 Subject: [Kiev-pm] =?utf-8?q?=28no_subject=29?= Message-ID: <649566011.20140129191810@ro.ru> Всем привет. Тут иногда проскакивают вакансии, может имеется у кого-нибудь вакантная позиция для perl-разработчика на удаленку? Буду рад пообщаться... -- С уважением, mailto:dev4 at ro.ru -------------- next part -------------- An HTML attachment was scrubbed... URL: