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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Json::XS + jquery.autocomplete, кодировка 
V
    Опции темы
Vampir41k
Дата 17.6.2010, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хотелось сделать автокомплит в поиске, делаем все это на perl + jquery. 
Перл скрипт исходя из того что ввели  в inpute достает из mysql подходящие данные (SELECT name FROM .... LIKE <данные из GET> LIMIT 5)
(в скуль запрос из гета строка попадает в нормалной кодировке и в результате запроса получаем масив искомых строк)
потом через Json::XS  кодируем и возращаем в  jquey.autocomplete("backend.pl"); 
Возникла проблема в том что данные которые будут подставляться на выходе получаются  кракозябрами вместо кириллицы
К сожалению именно в этот момент кинуть код не имею возможности, но хотелось бы увидеть хоть какие то мысли по этому поводу.
Посылки в гугль не принимаю - гуглил очень долго и безрезультатно...

зы пишем на Linux, БД и все остальное в UTF

Это сообщение отредактировал(а) Vampir41k - 17.6.2010, 23:29
PM MAIL WWW ICQ   Вверх
gcc
Дата 18.6.2010, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Json::XS не много хитро  чем Json.pm

пробовали то что тут написано http://search.cpan.org/~mlehmann/JSON-XS-2.29/XS.pm
?

Попробуй в скрипте сделать отладочный вывод в консоль пришедшей строки и обработанной, перед отдачей клиенту. После этого станет понятно, где проблема и что копать дальше.


можно еще JSON::PP, он не медленнее и даже быстрее




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


Новичок



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

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



джава ($.getJSON ) получает такое  
 
[{"98452":"\u00d0\u0092\u00d0\u00b0\u00d1\u0085\u00d1\u0080\u00d1\u0083\u00d1\u0088\u00d0\u00b5\u00d0\u00b2\u00d0\u00b0"}]

а дает такое

user posted image

Судя по скрину число 23 прошло нормально и даже нашло соответствие в базе



Это сообщение отредактировал(а) Vampir41k - 18.6.2010, 10:32
PM MAIL WWW ICQ   Вверх
gcc
Дата 18.6.2010, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



попробуйте, так: 

Код

$value = Encode::decode ( 'utf8', $value );

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


Новичок



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

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



Код

webgetdat();
use URI::Escape;
$str = uri_unescape($FORM{text});
  @ulp=$hconfig{"main_db_type"}->db_getdata("StreetDB","name LIKE '".$str."%' limit 5","street_id,name");
#  @ulp=$hconfig{"main_db_type"}->db_getdata("DeviceDB","name LIKE '".$str."%' limit 5","dev_id,name");
  for (my $i=0;$i<int(@ulp);$i++){
      $wngroup{$ulp[$i][0]}=$ulp[$i][1];
#      print "$ulp[$i][0] - $ulp[$i][1]\n";
  }
print "Content-type: text/html  \r\n\r\n";
use JSON::XS;
my $json_xs = JSON::XS->new();
$json_xs->ascii(1);
$t=$json_xs->encode([{%wngroup}]);
print $t;



переменная $t это то что получает  jquery(
PM MAIL WWW ICQ   Вверх
gcc
Дата 18.6.2010, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



может быть так:

Код

use Encode;

 for (my $i=0;$i<int(@ulp);$i++){
      $wngroup{$ulp[$i][0]}=$ulp[$i][1];
$wngroup{$ulp[$i][0]} = Encode::decode ( 'utf8', $wngroup{$ulp[$i][0]});

#      print "$ulp[$i][0] - $ulp[$i][1]\n";
  }


PS: у меня такая проблема была, по-моиму она не так решается, хотя возможно я там что-то перепутал, я просто использовал JSON::PP или JSON
PM WWW ICQ Skype GTalk Jabber   Вверх
Vampir41k
Дата 18.6.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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


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

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


 




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


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

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