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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка сбивается 
V
    Опции темы
gcc
Дата 30.11.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



подскажите

мне нужно отправить utf8 на сервер с форм text и сразу же вернуть обратно onchange="_go(this)"


но проблема что кодировка сбивается!
вот:
Код

ГлавнаÑ� | ПоиÑ�к | Группы | Видеоальбомы | !Фотоальбомы! | 
Стати�тика | Помощь | Личные �ообщени� | Ваш профиль | Выход



я посмотрел отладку, вижу картинку что кодировка закодирована в что-то! проблем с кодировкой у меня нету кроме этого


почему оно вовращает в сбитой кодировке? проблема на сервере?




Я вот увидел в отладке

что кодировка кодируется в что-то

Код

 \x{412} \x{434}\x{430}\x{43d}\x{43d}\x{43e}\x{439} \x{441}\x{442}\x{430}\x{442}\x{44c}\x{435} \x{440}\x{430}\x{441}\x{441}
\x{43c}\x{430}\x{442}\x{440}\x{438}\x{432}\x{430}\x{435}\x{442}\x{441}\x{44f} \x{440}\x{435}\x{430}\x{43b}\x{438}\x{437}\x{430}
\x{446}\x{438}\x{44f} CRUD \x{43f}\x{43e}\x{434} perl. \x{412}\x{441}\x{435} \x{43a}\x{442}\x{43e} \x{43f}\x{440}\x{43e}\x{433}
\x{440}\x{430}\x{43c}\x{43c}\x{438}\x{440}\x{443}\x{44e}\x{442} \x{43f}\x{43e}\x{434} web \x{437}\x{43d}\x{430}\x{44e}\x{442}, 




НО utf8 работает хорошо во все остальном!!!
т.е. русские символы закодироанные в что-то...



Это сообщение отредактировал(а) gcc - 30.11.2009, 17:49
PM WWW ICQ Skype GTalk Jabber   Вверх
Egik2
Дата 30.11.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 302
Регистрация: 29.7.2008
Где: Агудзера

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



Текст приходит уже на сервер крокозябрицей, или возвращается тебе оттуда в таком виде?

Если второе, тогда попробуй напрямую задать кодировку:

print "Content-type:text/html; charset=utf-8\n\n";
вместо print header()

и посмотреть как в самом Apache c директивами AddDefaultCharset или CharsetDefault и тому подобными
может проблема в этом.


--------------------
Три великие добродетели программиста: лень, нетерпение и самомнение (Larry Wall)
a-nav.com
developer-blog.ru
world-poetry.org
PM MAIL WWW ICQ   Вверх
gcc
Дата 1.12.2009, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



проблем с кодировкой у меня нету кроме этого

ajax нету
1) на странице кодировка нормальная, я нажимаю на кнопку
2) мне возвращает в браузере  
Код

Группы | Ð’Ð

3) смотрю дамп в perl вижу такое 
Код

 \x{412} \x{434}\x{430}



в mod_perl, поставил я в httpd.conf
Код

AddDefaultCharset utf-8



забыл написать что на Catalyst использую

и поставил туда: 
Код


 sub end : ActionClass('RenderView') {
 my ( $self, $c ) = @_;
 $c->res->content_type( "text/html; charset=utf-8" );
 }


вот эта страница
http://x0.org.ua/perl/hello.html.txt

т.е. проблема в том что в полях textarea или text есть символы из-за которые  это происхордит, я пока не понял какие именно... но такое происходит со многими статьями

мне не сроно надо, просто не приятно...






PM WWW ICQ Skype GTalk Jabber   Вверх
ginnie
Дата 1.12.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



gcc, у меня такой вид текста был когда я использовал JSON::XS, который все мои cp1251-строчки конвертировал в utf-8 используя таблицу iso-8859-1 (latin1). Проблема скорее всего на серверной стороне. Попробуй в скрипте сделать отладочный вывод в консоль пришедшей строки и обработанной, перед отдачей клиенту. После этого станет понятно, где проблема и что копать дальше.


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


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



ginnie, если этот код закомментировать, то НЕ сбивается и все работает

Код

    $c->stash->{voting_co_current} = 1
      if $c->request->params->{type_voting_content} eq 'on';
    $c->stash->{forbi_comm_co_current} = 1
      if $c->request->params->{forbi_comm_co} eq 'on';
    $c->stash->{active_co_current} = 1
      if $c->request->params->{type_active_content} eq 'on';
    $c->stash->{close_co_current} = 1
      if $c->request->params->{type_close_content} eq 'on';
    $c->stash->{keys_co_current} = $c->request->params->{content_keys}
      if $c->request->params->{content_keys} ne '';
    $c->stash->{hiden_co_current} = 1
      if $c->request->params->{type_hiden_content} eq 'on';
    $c->stash->{hiden_g_co_current} = 1
      if $c->request->params->{type_hiden_guest_content} eq 'on';
    $c->stash->{name_co_current} = $c->request->params->{name_content}
      if $c->request->params->{name_content} ne '';
    $c->stash->{text_co_current} = $c->request->params->{content_text}
      if $c->request->params->{content_text} ne '';

    $c->stash->{heading_name_co_current} =
      $c->request->params->{name_head_content}
      if $c->request->params->{name_head_content} ne '';

    $c->stash->{id_co_current} = $c->request->params->{edit_id_co}
      if ( $c->request->params->{edit_id_co} && $edit_con );


    if ( !$sc && $c->request->params->{section_child} ) {
        $sc = $c->request->params->{section_child};
    }


я сделал: что если пользователь в админке что-то изменит, и если в вводимых данных ошибка, то чтобы те вводимые данные вернулись обратно... (чтобы их исправить и ввести без ошибок)  (если их удалить, то пользователю прейдется все с начало вводить, что не хорошо... )  

в этом хэше $c->request->params  $c->request->params->{name_head_content} стоят данные не в utf8?? (такого вроде бы не было никогда)

как это исправить?



Это сообщение отредактировал(а) gcc - 15.12.2009, 09:08
PM WWW ICQ Skype GTalk Jabber   Вверх
Bulat
Дата 15.12.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



Цитата(gcc @  15.12.2009,  08:42 Найти цитируемый пост)
я сделал: что если пользователь в админке что-то изменит, и если в вводимых данных ошибка, то чтобы те вводимые данные вернулись обратно...


Очевидная проблема вот здесь, и абсолютно точно на стороне сервера. Возможно в теле обработки данных и проверки на верность закралось что-то не оч хорошее, а может быть все вылечится за счет объявления в начале тела no utf8, а в конце use utf8. Но это не более чем догадка(я сталкивался с похожим в одном из проектов в котором работал), так как многое зависит от реализации.. Не исключаю, что может быть каким-нить боком нужно юзание Encode.. Но ответ на вопрос может дать только реализация. smile



--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
gcc
Дата 15.12.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



я поставил так:

Код

    $c->stash->{name_co_current} = Encode::decode('utf8', $c->request->params->{name_content})


мне отвичает

Код

Caught exception in MyApp::Controller::Profile->add_content "Cannot decode string with wide characters at /usr/local/lib/perl5/site_perl/5.8.9
/mach/Encode.pm line 174."


есть decode заменить на encode то почему-то не переводятся тэги с HTML в BB

Добавлено через 14 минут и 52 секунды
Цитата(Bulat @ 15.12.2009,  13:30)
Цитата(gcc @  15.12.2009,  08:42 Найти цитируемый пост)
я сделал: что если пользователь в админке что-то изменит, и если в вводимых данных ошибка, то чтобы те вводимые данные вернулись обратно...


Очевидная проблема вот здесь, и абсолютно точно на стороне сервера. Возможно в теле обработки данных и проверки на верность закралось что-то не оч хорошее, а может быть все вылечится за счет объявления в начале тела no utf8, а в конце use utf8. Но это не более чем догадка(я сталкивался с похожим в одном из проектов в котором работал), так как многое зависит от реализации.. Не исключаю, что может быть каким-нить боком нужно юзание Encode.. Но ответ на вопрос может дать только реализация. smile

в начале скрипта и в конце перед отправкой в шаблон?


=== 

вот должно работать, то не работает,

в конце скрипта:

Код

    $c->stash->{voting_co_current} = 1
      if $c->request->params->{type_voting_content} eq 'on';
    $c->stash->{forbi_comm_co_current} = 1
      if $c->request->params->{forbi_comm_co} eq 'on';
    $c->stash->{active_co_current} = 1
      if $c->request->params->{type_active_content} eq 'on';
    $c->stash->{close_co_current} = 1
      if $c->request->params->{type_close_content} eq 'on';
    $c->stash->{keys_co_current} = Encode::decode('utf8',$c->request->params->{content_keys})
      if $c->request->params->{content_keys} ne '';
    $c->stash->{hiden_co_current} = 1
      if $c->request->params->{type_hiden_content} eq 'on';
    $c->stash->{hiden_g_co_current} = 1
      if $c->request->params->{type_hiden_guest_content} eq 'on';
    $c->stash->{name_co_current} = Encode::decode('utf8', $c->request->params->{name_content})
      if $c->request->params->{name_content} ne '';
    $c->stash->{text_co_current} = Encode::decode('utf8', $c->request->params->{content_text})
      if $c->request->params->{content_text} ne '';

    $c->stash->{heading_name_co_current} =
      Encode::decode('utf8',$c->request->params->{name_head_content})
      if $c->request->params->{name_head_content} ne '';



и в начале:

Код

$c->request->params->{name_head_content} = Encode::encode('utf8',$c->request->params->{name_head_content});
$c->request->params->{content_text} = Encode::encode('utf8', $c->request->params->{content_text});

$c->request->params->{name_content} = Encode::encode('utf8', $c->request->params->{name_content});

$c->request->params->{content_keys} = Encode::encode('utf8',$c->request->params->{content_keys});


===


раньше это работало:
Код

    $text_cut = Encode::decode('utf8', $text_cut);
    $text_cut = substr( $text_cut, 0, 30 );
    $text_cut = Encode::encode('utf8', $text_cut ); 
     


сейчас не хочет

Это сообщение отредактировал(а) gcc - 15.12.2009, 14:04
PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 15.12.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



то что я выше описал, в начале и в конце decode encode, срабатывает, НО

на странице все равно сбитая кодировка, эти данные из param в нормальной кодировка, еще и данные выводятся не в BB, а в HTML...

PM WWW ICQ Skype GTalk Jabber   Вверх
gcc
Дата 16.12.2009, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

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



извините, там перепутал

вообщем, сработало, вот это:

Код

 $c->request->params->{name_head_content} = Encode::encode('utf8',$c->request->params->{name_head_content})
 if $c->request->params->{name_head_content} ne '';
 $c->request->params->{content_text} = Encode::encode('utf8', $c->request->params->{content_text});
 $c->request->params->{name_content} = Encode::encode('utf8', $c->request->params->{name_content})
 if ($c->request->params->{name_content} ne '');
 $c->request->params->{content_keys} = Encode::encode('utf8',$c->request->params->{content_keys});



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


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

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


 




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


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

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