Intereting Posts
Laravel, получите последний идентификатор вставки, используя Eloquent Команда «возиться» не определена как запомнить входные данные в формах даже после обновления страницы? Не удалось открыть входной файл: composer.phar URL-адрес в yii2 gridview Использование MySQL, как мне выбрать ранг результата запроса для одной конкретной строки? регулярное выражение php для видео swf Cassandra + PHP + Thrift + извлекает плохую производительность нескольких строк Получение фактического значения из узла PHP SimpleXML Приложение Twitter oauth начало возвращать код ошибки 89 Недействительный или истекший токен после 1 года работы PHP if ($ some_var == 1) всегда возвращает true, даже если это не так? Любая документация о том, как Apache обрабатывает загрузку файлов? Zend Framework 2 – ZFCUser – Как исключить целевую страницу из auth PHP – конвертировать путь к файловой системе в URL как использовать CURL и PHP Простой HTML DOM Parser с объектом

кодировки mySQL и PHP

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");