Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как в MySQL заставить различать Е и Ё ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: толи это UTF8, то ли MySQL, то ли всё вместе
ZUMA
Отправлено: 18 Марта, 2009 - 22:43:56
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Народ спасайте! Вобщем проблема в чём. Сделал я проект под заказ. Студент богатенький заказал проект на дипломную работу. Работа с антонимами (словами противоположными друг другу) и синонимами.

В общем я сделал. Всё мы с ним стали заполнять (набивать примеры) и проблема выявилась на буквах Е и Ё. Грёбаный UTF8 или MySQL, я хз, кого винить, при поиске, ну к примеру:

SELECT `word` FROM `ant_words` WHERE `word`LIKE '%лё%';

выдает не только слова содержащие в себе "лЁ":

лётчик
плёнка
плёвое
циплёнок
клён

но и все содержащие в себе "лЕ"

плен
нетленный
атлет
амулет
...

Я делал проект месяц, студент упёрся рогом и говорит, фуфло. Говорит "У меня лингвистический факультет и всё должно быть по правилам русского языка". Говорит мол не нравиться. Исправляй.

Я не знаю что делать. Народ спасайте!

p.s.
кодировка UTF8, MySQL 5.0.45, PHP 5 . Как заставить мускул правильно искать? Помогите!!!

p.s.2
сравнение было utf8_general_ci , поменял во всех таблицах и в самой базе на utf8_unicode_ci . Эффекта не дало, как считало буквы Е и Ё одинаковыми, так и продолжает.

p.s.3
менял на utf8_bin , тоже самое, е и ё при поиске считает за одну букву
 
 Top
Champion Супермодератор
Отправлено: 19 Марта, 2009 - 08:49:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Я так думаю, что надо поменять кодировку на cp1251
 
 Top
Джур
Отправлено: 19 Марта, 2009 - 11:02:00
Post Id



Посетитель


Покинул форум
Сообщений всего: 423
Дата рег-ции: Март 2007  


Помог: 0 раз(а)




беда в базе... если я правильно понял разрабов... то шутка в том, что надо указать какой язык вы юзаете... тоесть если база настроенна по умолчанию, будет чепуха...
Но это было с первыми версиями mysql(5), в новых билдах обещали поправить.

мы из-за этого безобразия весь фреймворк на cp1251 перевели, сервер робит в cp1251, а клиенская часть робит в utf8... не кошерно, зато стабильно


Отредактировано администратором: Champion, 19 Марта, 2009 - 11:15:17
Используем более приличные выражения)


-----
Тамбовский каджит тебе товарищ
 
 Top
Stierus Супермодератор
Отправлено: 19 Марта, 2009 - 17:29:22
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




У меня база с кодировкой cp1251_general_ci
запрос SELECT * FROM config where `value` LIKE '%всё%';

в таблице config столбце value 2 поля :

'почему всё так плохо у нас ?'
'почему все так плохо у нас ?'

Возвращает 1 нужную строку

версия б.д. 5.0.45

Что-то у тебя напутано, если совсем по срокам прижмёт - ну попробуй ты в php результат фильтровать Улыбка, совсем не гут решение, но если клиент поворачивается жопой и времени на размышления нет - ...
 
My status
 Top
ZUMA
Отправлено: 19 Марта, 2009 - 20:16:27
Post Id



Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2009  


Помог: 0 раз(а)




Спасибо всем. Подсказали на другом форуме. В общем оказывается я не там менял этот параметр сравнения.

Там значит в трёх местах эта штука.
1. Это в самой базе
2. Это в таблице
3. Это в колонке (столбце)

Я менял на utf8_bin в первых двух и ждал с моря погоды, а оказывается нужно было войти в таблицу и проверить там. Я зашёл, смотрю на поле word и оказалось, что там стоит utf8_general_ci. Поменял на utf8_bin и пошло. Понятное дело, что там пропадает регистронезависимость, но мне она не нужна, т.к. вся работа проходит в виде "слова с маленькой буквы".

Единственное, что мне подсказали, так это то, что можно в запросе как-то указать режим проверки (сравнения) для каждого конкретного случая. А в своей книжке по MySQL я этого не нашёл. Может быть подскажет кто? (добавив что-то к моему, предложенному здесь, запросу).
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB