[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Mysql, Utf8, Php, запрос like
yelenabun
Здравствуйте, такая проблема:
данные в таблицах в mysql в кодировке utf8_unicode_ci. На пхп страницах все данные на разных языках отображаются корректно, т.е. выставлены хидеры с кодировкой ютф8. Вопрос в следующем, как выполнить запрос типа

select from <table name > where like '$value%';

value здесь выглядит как '%u0442', например, т.к. она приходит на сервер со страницы с кодировкой ютф, только вот данные в таблице отображаются в виде символов - 'кукужужу'

Пробовала
SET NAMES utf8;

проверяла:

SELECT CONVERT(CONVERT(title USING binary) USING utf8) FROM news

все остается неизменным.
Как сравнить эти данные?

З.Ы. пхп 5, масиквел 4.1.16



Спустя 11 часов, 7 минут, 13 секунд (16.08.2006 - 10:05) DTprog написал(а):
А если в БД использовать кодировку не utf8_unicode_ci, а utf8-bin?

Спустя 20 минут, 33 секунды (16.08.2006 - 10:26) zilogo написал(а):
QUOTE
только вот данные в таблице отображаются в виде символов - 'кукужужу'

Где вы это посмотрели ?
QUOTE
'%u0442'

Это то, с чем сравнивали ?

Непонял вопрос. Есть поля с русскими символами и с ними неверно выборка проходит ?

Спустя 18 минут, 40 секунд (16.08.2006 - 10:44) vasa_c написал(а):
QUOTE
value здесь выглядит как '%u0442', например, т.к. она приходит на сервер со страницы с кодировкой ютф

Каким это образом она так приходит?
Через escape() что-ли пропустили?

Спустя 55 минут, 29 секунд (16.08.2006 - 11:40) yelenabun написал(а):
все, разобралась.<br><br>vasa_c,<br>ниче я не пропускала, приходит таким образом она из текстового поля формы, которая находится на хтмльной странице, в хидере у которой указано. что на ней кодировка ютф.<br><br>zilogo,<br>на счет этого - 'кукужужу' - посмотрела саму таблицу при помощи оболочки для майсиквела. '%u0442' - это то, по чему надо селект сделать.<br><br>а на счет escape() - это как раз в тему, нашла в мануале функцию, кто-то написал:<br><br>
 
function unescape($str) {
        $str = rawurldecode($str);
        preg_match_all("/(?:%u.{4})|&#x.{4};|&#d+;|.+/U",$str,$r);
        $ar = $r[0];
        print_r($ar);
        foreach($ar as $k=>$v) {
           if(substr($v,0,2) == "%u")
                $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,-4)));
           elseif(substr($v,0,3) == "&#x")
                $ar[$k] = iconv("UCS-2","UTF-8",pack("H4",substr($v,3,-1)));
           elseif(substr($v,0,2) == "&#") {
           echo substr($v,2,-1)."
";
                $ar[$k] = iconv("UCS-2","UTF-8",pack("n",substr($v,2,-1)));
           }
        }
        return join("",$ar);
 }
 
    echo unescape('%u0442'); //т
 


всем большое спасибо...

Спустя 1 минута, 45 секунд (16.08.2006 - 11:42) yelenabun написал(а):
да, запрос <br>
$value = 'т';
select <field name> from <table name> where <field name> like '$value%';

работает
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.