Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: запрос не понимает русских букв
 
 автор: inga   (14.07.2006 в 10:45)   письмо автору
 
 

пишу поиск по буквам. есть такой запрос
SELECT * FROM sectdata WHERE DataDesc like 'A%'

ну тут делаю запрос ко всем строкам где DataDesc начинается на "А"

проблема состоит в том что этот запрос работает только с ангийскими буквами, если пишу русскую букву то ни чего не выводит.
почему так? и что же делать?

   
 
 автор: cheops   (14.07.2006 в 10:58)   письмо автору
 
   для: inga   (14.07.2006 в 10:45)
 

MySQL как версии?

   
 
 автор: inga   (14.07.2006 в 11:06)   письмо автору
 
   для: cheops   (14.07.2006 в 10:58)
 

4.1.14

   
 
 автор: cheops   (14.07.2006 в 11:08)   письмо автору
 
   для: inga   (14.07.2006 в 11:06)
 

В какой кодирове хранятся данные в таблице и какая кодировка выставлена по умолчанию для самой таблицы?

   
 
 автор: inga   (14.07.2006 в 11:13)   письмо автору
 
   для: cheops   (14.07.2006 в 11:08)
 

Кодировка стандартная UTF

   
 
 автор: Trianon   (14.07.2006 в 11:44)   письмо автору
 
   для: inga   (14.07.2006 в 11:13)
 

А как Вы пишите русскую букву в кодировке UTF?
Или у Вас весь скрипт в UTF-редакторе набран?

   
 
 автор: inga   (14.07.2006 в 12:02)   письмо автору
 
   для: Trianon   (14.07.2006 в 11:44)
 

просто пишу в фаре русской раскладкой

   
 
 автор: Trianon   (14.07.2006 в 12:27)   письмо автору
 
   для: inga   (14.07.2006 в 12:02)
 

Тогда наверное код скрипта у Вас в Windows-1251.
И настраивать кодировки нужно как-то так:

mysql_query ("set character_set_server='utf-8'"); // сервер держит базу в UTF-8
mysql_query ("set character_set_client='cp1251'"); // клиент отправляет запросы в cp1251
mysql_query ("set character_set_results='cp1251'"); // клиент принимает данные  в cp1251

   
 
 автор: inga   (14.07.2006 в 12:38)   письмо автору
 
   для: Trianon   (14.07.2006 в 12:27)
 

не помогает. блин! и что же делать?

   
 
 автор: Trianon   (14.07.2006 в 13:01)   письмо автору
 
   для: inga   (14.07.2006 в 12:38)
 

А остальные операции с русским текстом БД выполняются нормально?

   
 
 автор: inga   (14.07.2006 в 13:11)   письмо автору
 
   для: Trianon   (14.07.2006 в 13:01)
 

ну явно пишу рускую букву только здесь, пробывала и слово писать.
русские не находит

   
 
 автор: Trianon   (14.07.2006 в 13:18)   письмо автору
 
   для: inga   (14.07.2006 в 13:11)
 

А добавление строк с русскими буквами, и вывод их нормально выполняются?

   
 
 автор: snorri   (14.07.2006 в 13:55)   письмо автору
 
   для: Trianon   (14.07.2006 в 13:18)
 

Та же проблема - поисал на форуме.
Помогло!
Спасибо.

   
 
 автор: inga   (14.07.2006 в 13:56)   письмо автору
 
   для: Trianon   (14.07.2006 в 13:18)
 

да

   
 
 автор: Trianon   (14.07.2006 в 14:20)   письмо автору
 
   для: inga   (14.07.2006 в 13:56)
 

тогда это, видимо, следствие того, что данные у Вас хранятся не в той кодировке, которая заявлена.

   
 
 автор: inga   (14.07.2006 в 15:40)   письмо автору
 
   для: Trianon   (14.07.2006 в 14:20)
 

да блин! вроде те же кодировки.
так что делать? так и не решили этот вопрос

   
 
 автор: Trianon   (14.07.2006 в 15:43)   письмо автору
 
   для: inga   (14.07.2006 в 15:40)
 

В какой кодировке у Вас выводится html-страница c данными из таблицы?
И html-страница, создающая форму с полями ввода?

   
 
 автор: inga   (14.07.2006 в 15:46)   письмо автору
 
   для: Trianon   (14.07.2006 в 15:43)
 

везде CP1251
и в таблице и на странице

   
 
 автор: Trianon   (14.07.2006 в 15:51)   письмо автору
 
   для: inga   (14.07.2006 в 15:46)
 

Занчит, если данные из одной кодировки в другую Вы явным образом не преобразуете, то в таблице MySQL они тоже лежат в кодировке cp1251. А меж тем, Вы утверждаете, что кодировка СУБД - UTF-8. Значит не "те же кодировки", а разные.

Что делать - приводить в соответствие одно другому.
Например так, в общих чертах:
Снять дамп, в котором данные бы соответствовали внешнему виду. Убедиться что он целый, т.е. без повреждений.
Создать БД с правильными настройками кодировки.
Залить дамп в созданную БД.
Изменить скрипты подключения к БД так, чтобы они учитывали установленные настройки.
Проверить всё ли ок.
И только после этого уничтожать старую БД.

   
 
 автор: inga   (14.07.2006 в 15:54)   письмо автору
 
   для: Trianon   (14.07.2006 в 15:51)
 

и что же мне делать??????

   
 
 автор: Lelik   (14.07.2006 в 19:56)   письмо автору
 
   для: inga   (14.07.2006 в 15:54)
 

Попробуйте функциями изменения кодировки.

<?php
$text 
"Русское слово/буква";
$text iconv("cp1251""UTF-8"$text);
mysql_query("SELECT * FROM sectdata WHERE DataDesc like '$text%'")
?>

Ну или какось так

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования