- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
;9699061']Так просто поменяйте на таблице кодировку сопоставления на utf8_general_ci и всё.
Динамически её менять смысла нет, т.к. в зависимости от неё перестраивается индекс.
Видимо только так. Это проще будет. Спасибо.
Я вас уверяю, что UTF8 тут воооообще не при чём.
Это не так.
В некоторых случаях кодировки отличаются способом сравнения букв
в cp1251 в case insensitive collation е != ё, а в случае с utf8 e=ё.
Хотя, буква ё это единственный такой странный случай. Многие об этом не знают.
Хотя, буква ё это единственный такой странный случай. Многие об этом не знают.
Ну это в русском только один такой "умлаут", а в немецком, например, их несколько, а в скандинавских ещё больше.
[umka], ну так ведь и cp1251 и utf8 - обе русские. почему поведение в разных вариантах одного и того же языка различается? вот в чем странность
Не, utf-8 просто универсальная. И скорее всего, там дефолтные правила сравнения, видимо, не делают разницы между "à", "á", "â", "ã", "ä", "å" и просто "a", и т.д.
В php правила сравнения устанавливаются с помощью setlocale, и в локале ru_RU буквы "е" и "ё" считаются разными. А в MySQL это немного по-другому.
;9699808]В php правила сравнения устанавливаются с помощью setlocale, и в локале ru_RU буквы "е" и "ё" считаются разными.
значит это баг в php. mysql проверяет на основе официальных collation chars :
http://unicode.org/charts/uca/chart_Cyrillic.html
Е и Ё одинаковы с точностью до Secondary Difference (хз что это) - они там в одной строке нарисованы.
зачем php на это плюет? или я что-то напутал?
Пхп сравнивает строки побайтово, поэтому символы "е" и "ё" для него разные.
Чтобы использовать "умное сравнение", есть специальные функции
http://www.php.net/manual/ru/class.collator.php
И будут сравниваться уже не просто символы, а буквы :)
"Сила сравнения" — это как раз то, о чём вы говорите.
http://php.net/manual/ru/collator.setstrength.php
Буквы "ё" и "ж" отличаются уже по первичному признаку.
Буквы "ё" и "е" схожи по первичному, но отличаются по вторичному признаку.
Буквы "ё" и "Ё" отличаются лишь по третичному признаку.
[umka], в php есть функция mb_stristr, которая позволяет проверить на равенство строки, при условии что они уже одинаковы по длине. она считает равными строчные и прописные буквы. Ей я и проверял.
Потестировал и эти функции. Получается, что mb-функции php для русского используют primary difference. А в mysql по-умолчанию secondary, причем даже без возможности выбора.
Разброд и шатание в стане вебдевелоперов.
На сколько я понимаю, в кодировке cp1251 буквы е и ё (как и "и" "й") разные и это правильно, в utf8 - одинаковые и это баг http://bugs.mysql.com/bug.php?id=34096 который, как я понимаю, исправлен в последних версиях mysql.
Если вы переведете текст в utf8 то рискуете получить неожиданный результат на разных версиях mysql. Полагаю, что вам надо проверять строку на содержание этих символов и делать поиск по двум строкам (т.е. одна содержит е, вторая ё)
А может быть в бд просто все ё заменить на е и не париться?
При регистрации делать тоже самое.