AJAX и русский язык

12
CyberX
На сайте с 08.03.2008
Offline
51
892

Доброе утро. Возник вопрос по сабжу.

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

База в utf8_general_ci

============================ Файл с формой ==================================

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Untitled Document</title>

<script type="text/javascript" src="javascripts/prototype.js"></script>

<script type="text/javascript" src="javascripts/effects.js"></script>

<script type="text/javascript" src="javascripts/controls.js"></script>

<style>

body {font-family: verdana; arial, sans-serif; font-size: 12px; }

#search, ul { padding: 3px; width: 150px; border: 1px solid #999; font-family: verdana; arial, sans-serif; font-size: 12px;}

ul { list-style-type: none; font-family: verdana; arial, sans-serif; font-size: 12px; margin: 5px 0 0 0}

li { margin: 0 0 5px 0; cursor: default; color: green;}

li:hover { background: #ffc; }

</style>

</head>

<body>

<div>

<label>Type here</label> <input type="text" id="search" name="search" />

</div>

<div id="hint"></div>

<script type="text/javascript">

new Ajax.Autocompleter("search","hint","server.php");

</script>

</body>

</html>

======================== Файл обработчик =================================

<?php

$host = "localhost";

$database = "*****";

$user = "*****";

$password = "*******";

mysql_connect($host,$user,$password);

mysql_select_db($database);

$sql = "SELECT title FROM autocomplete_demo WHERE title LIKE '" . $search . "%'";

$rs = mysql_query($sql);

?>

<ul>

<? while($data = mysql_fetch_assoc($rs)) { ?>

<li><? echo stripslashes($data['title']);?></li>

<? } ?>

</ul>

========================================================================

Шустрый хостинг (http://www.colocat.ru) за нормальные деньги (Москва). 30 дней тестовый период. Рекомендую копирайтера aronskaya (/ru/users/73753). Отличные авторские тексты.
ciber
На сайте с 04.01.2008
Offline
215
#1

mysql_query("SET NAMES 'utf-8'");

Кажется так.

Гы... почти тезка

CyberX
На сайте с 08.03.2008
Offline
51
#2

ciber, не работает (неприличное выражение), добавил в файл обработчик

хошь так:

$sql = "SELECT title FROM autocomplete_demo WHERE title LIKE '" . $search . "%'";

$rs = mysql_query("SET NAMES 'utf-8'",$sql);

хошь так:

<?php

mysql_query("SET NAMES 'utf-8'");

$host = "localhost";

$database = "*****";

$user = "*****";

$password = "*******";

mysql_connect($host,$user,$password);

mysql_select_db($database);

$sql = "SELECT title FROM autocomplete_demo WHERE title LIKE '" . $search . "%'";

$rs = mysql_query($sql);

?>

<ul>

<? while($data = mysql_fetch_assoc($rs)) { ?>

<li><? echo stripslashes($data['title']);?></li>

<? } ?>

</ul>

ciber
На сайте с 04.01.2008
Offline
215
#3

mysql_connect($host,$user,$password);

mysql_select_db($database);

mysql_query("SET NAMES 'utf-8'");

ciber добавил 09.01.2009 в 06:25

А вообше покури мануалы по мускулу.

RU
На сайте с 08.12.2008
Offline
9
#4
CyberX:
Доброе утро. Возник вопрос по сабжу.
Перечитал кучу мануалов и все что только можно отгуглил. Никак этот гад не хочет брать русский язык. Если кто знает, или сталкивался, подскажите.

всё просто:

в PHP

//## перекодировка unicode UTF-8 -> win1251

function utf8_win ($s){

$out="";

$c1="";

$byte2=false;

for ($c=0;$c<strlen($s);$c++){

$i=ord($s[$c]);

if ($i<=127) $out.=$s[$c];

if ($byte2){

$new_c2=($c1&3)*64+($i&63);

$new_c1=($c1>>2)&5;

$new_i=$new_c1*256+$new_c2;

if ($new_i==1025){

$out_i=168;

}else{

if ($new_i==1105){

$out_i=184;

}else {

$out_i=$new_i-848;

}

}

$out.=chr($out_i);

$byte2=false;

}

if (($i>>5)==6) {

$c1=$i;

$byte2=true;

}

}

return $out;

}

далее $search = utf8_win( $search );

и всё)

доступный способ для оплаты ваших услуг (http://www.smsdostup.ru/3137/) Дивная верстка за $10 (/ru/forum/324509)
CyberX
На сайте с 08.03.2008
Offline
51
#5

Real-Unior, спасибо большое, даже не знаю как и отблагодарить. Всю ночь мозги трепал, вариантов перепробовал тьму. В общем огромное спасибо, а то у меня уже голова от количества принятой ненужной информации чуть не лопнула.

CyberX добавил 09.01.2009 в 06:46

ciber, также спасибо, но у меня этот вариант не пашет. Хотя я не понимаю как у меня заработал вариант Real-Unior, т.к. от предложил перекодировку в 1251, но сейчас вникать не буду пойду сначала высплюсь. Всем огромное спасибо.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#6

Cybex, Вам не кажется странным... у вас всё в UTF-8 и Вам помогает перекодировка в win1251... хм...

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
CyberX
На сайте с 08.03.2008
Offline
51
#7

LEOnidUKG, нет, не кажется. Я точно уверен что где-то накосячил с кодировкой, на первый взгляд в коне у меня все вроде нормально, база тоже в нужном формате. Но это только на первый взгляд. Кстати код в 1 посте точный может меня глючит, но я ничего так про 1251 не вижу.

Таггу x_x
На сайте с 31.10.2005
Offline
445
#8
Real-Unior:
всё просто:

можно и проще

iconv("cp1251","UTF-8","То, что нужно перекодировать");

☠️☠️☠️
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#9
Tarry:
можно и проще
iconv("cp1251","UTF-8","То, что нужно перекодировать");

если PHP5...

А вообще CyberX, ИМХО это не нормальная работа скрипта 🙄

CyberX
На сайте с 08.03.2008
Offline
51
#10

LEOnidUKG, полностью согласен. :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий