HI, у меня проблема с этим запросом
SELECT * FROM table WHERE `name` LIKE '%tést%'
HMTL и SQL-таблица имеют кодировку utf-8, но, к сожалению, нет mysql_set_charset('utf-8')
и я НЕ могу ее использовать.
Я пробовал с iconv("UTF-8", "ISO-8859-1", $name)
но запрос соответствует только test
.
Я хочу соответствовать всем этим: test, tést, tèst, tëst
(как это работает с mysql_set_charset
)
редактировать:
SET NAMES utf8
является более возможным … база данных с кодировкой utf8, к сожалению, контент заполняется из сети без mysql_set_charset
или SET NAMES
.
В настоящее время, если эти функции используются, результаты перепутаны.
version()
5.1.41-3ubuntu12.9
edit2:
когда я использую SET NAMES utf8
он соответствует только tést
и они выглядят как tést
когда я использую iconv("UTF-8", "ISO-8859-1", $name)
он соответствует только test
Перед запросом попробуйте:
mysql_query("SET NAMES 'utf8'", $conn);
* редактирование *
Возможно, в зависимости от версии MySQL вы также можете использовать:
mysql_query("SET CHARACTER SET utf8", $conn);
Наконец, база данных должна использовать набор символов UTF-8, чтобы обеспечить следующее:
ALTER <database_name> DEFAULT CHARACTER SET utf8;
* Дополнительные изменения *
Прочитав ваши изменения, я думаю, что это проблема с вашей кодировкой HTML / PHP. На странице отправки символов убедитесь, что вы правильно настроили заголовки:
header('Content-Type: text/html; charset=UTF-8');
Вы также должны установить это через метатеги:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
Затем установите многобайтовое кодирование с помощью функции mb_internal_encoding()
:
mb_internal_encoding("UTF-8");
По умолчанию PHP использует ISO-8859-1.
Я только что выполнил быстрый тест, и MySQL работает так, как вы ожидаете, что он будет работать.
Возможно, именно так вы подключаетесь к базе данных, вы можете попробовать выполнить SET NAMES 'utf8'; перед выполнением запросов и посмотреть, поможет ли это!
Также обратите внимание, что mysql_set_charset должен принимать utf8, без тире! Посмотрите пример из PHP, чтобы быть уверенным!
Ура!
попробуйте regexp с требуемым регулярным выражением типа
SELECT * FROM table WHERE name REGEXP #REGULAR EXP ЗДЕСЬ #
Вы пробовали SET NAMES?
mysql_query("SET NAMES utf8");