Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Плагин Autocomplete и кодировка (кириллица). (https://javascript.ru/forum/jquery/6486-plagin-autocomplete-i-kodirovka-kirillica.html)

bobroff 30.11.2009 10:01

Плагин Autocomplete и кодировка (кириллица).
 
Здравствуйте.

Установил плагин jQuery Autocomplete (http://docs.jquery.com/Plugins/Autocomplete), настроил все работает. Но когда ввожу в поле текст на кириллице, запрос посылает в кодировке, отличной от кодировки сайта. Я не могу определить, в какой кодировке посылается запрос (пробовал iconv и т.п.). Подскажите, как разобраться с кодировкой? И как настроить, чтобы данные отправлялись и возвращались в одной и той же кодировке.

Заранее, спасибо...

colonel 30.11.2009 10:40

Полагаю что запросы идут в UTF-8. И, соответственно возвращаются тоже в UTF-8. Попробуйте изменить кодировку самого сайта на UTF-8 - для проверки.

bobroff 30.11.2009 17:27

Цитата:

Сообщение от colonel (Сообщение 36776)
Полагаю что запросы идут в UTF-8. И, соответственно возвращаются тоже в UTF-8. Попробуйте изменить кодировку самого сайта на UTF-8 - для проверки.

Кодировка сайта изначально в utf, пробовал перекодировать, нем получается.
Пробовал онлайн скрипты для определния кодировки - определяют MAC, но, думаю, такого быть не может.

colonel 30.11.2009 18:04

Приведите куски кода - только без "мусора".

bobroff 30.11.2009 18:17

Возможно вопрос сводиться к следующему: скрипт посылает кириллицу в виде get запрос в формате: %F0%B1%F0%B0%F0%BE%F0%B0%F0%BE%F1%8B. Как это преобразовать в кириллический текст?

bobroff 30.11.2009 18:19

Код:

Страница с автоподбором:
<script type="text/javascript" charset="utf-8">

$(document).ready(function(){
	$("#ingredients input").autocomplete('../php_server/ingredient_autocomplete.php');

});


ingredient_autocomplete.php

$query = strtolower($_GET["q"]);
if (!$query) return;
print_r(($query));


В результате в поле input крякозябы: http://pixs.ru/showimage/bugpng_9253986_365140.png

colonel 30.11.2009 18:27

Цитата:

Сообщение от bobroff
Возможно вопрос сводиться к следующему: скрипт посылает кириллицу в виде get запрос в формате: %F0%B1%F0%B0%F0%BE%F0%B0%F0%BE%F1%8B. Как это преобразовать в кириллический текст?

А, ну так это понятно, в GET-запросе кириллица кодируется совсем не в UTF-8, а в Unicode. Почитайте вот эту статью. Там все понятно расписано.

colonel 30.11.2009 18:36

Если интересно, то вот как у меня было в моем комплитере:
index.php
Цитата:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
$("#search2").autocomplete("autocomplete.php", {});

autocomplete.php
Цитата:

header('Content-Type: text/html; charset=utf-8');
.....
$q = isset($_GET["q"]) ? $_GET["q"] : "";
.......
if(mysql_num_rows($rs) != 0)
{
while($row = mysql_fetch_assoc($rs))
{
...
$content = trim($row["content"]);
$content = iconv('windows-1251', 'UTF-8', $content);
$number_of_people = trim($row["number_of_people"]);
$res = mb_strpos(mb_strtolower($content, "UTF-8"), mb_strtolower($q, "UTF-8"));
if($res !== false && $res == 0) print $content . "|" . $number_of_people . "|" . $id . "\n";
}
}

bobroff 30.11.2009 18:56

ОГРОМНОЕ СПАСИБО!!! Твой пример очень помог, все заработало!!!

colonel 30.11.2009 19:37

Ученье - свет, а ... Не за что! Карму можете мне повысить ;-)


Часовой пояс GMT +3, время: 04:01.