данные в таблицах в mysql в кодировке utf8_unicode_ci. На пхп страницах все данные на разных языках отображаются корректно, т.е. выставлены хидеры с кодировкой ютф8. Вопрос в следующем, как выполнить запрос типа
select
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%';
работает