<![CDATA[ AjaxSearch не работает с руским языком? - My Forums]]> https://forums.modx.com/thread/?thread=60940 <![CDATA[Re: AjaxSearch &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089; &#1088;&#1091;&#1089;&#1082;&#1080;&#1084; &#1103;&#1079;&#1099;&#1082;&#1086;&#1084;?]]> https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353717 Известный мне выход - изначально начинать заполнять сайт на MySQL 3 версий, они поддерживают кодировку полей win1251. Однако когда сайт уже построен на новых MySQL вроде как ничего не поделаешь:)

Вот информационна страница моего хостера касательно всего этого:
Работа с кодировками (mySQL 4 / 5)
Кодировка базы данных (charset, collation) устанавливает режим работы с текстовой информацией в базе. Кодировка задается двумя параметрами: charset - набор кодов символов, рассматриваемых как текст, и collation - правило работы с этими символами (правила сортировки, сравнения, перевода регистров).

В mySQL 4 появилась возможность самостоятельно задавать кодировки для таблиц и даже для отдельных полей таблиц.

К сожалению, работа с разными кодировками в mySQL 4 и mySQL 5 сделана не вполне удачно. Мы можем предложить два способа работы.

Работа с кодировкой по умолчанию

По умолчанию на нашем хостинге установлен charset - latin1, collation - latin1_binary. Сравнение русских букв производится по их коду по номеру. Это позволяет делать следующее:

Главное: Этот режим совместим со всем ПО - старыми и новыми клиентами, mySQL Front, PHP клиентами, ODBC, и т.д., т.е. достигается максимальная совместимость со всем тем, что работало с mySQL 3х версий.
Хранение русских символов во всех режимах осуществляется правильно.
Сортировка русских символов осуществляется правильно, кроме буквы Ё (к сожалению).
К сожалению, регистро-независимое сравнение и преобразование регистров для русского алфавита в данном режиме не работает. Помните, это может привести к нерабочести приложений, которые на это рассчитаны!
Для того, чтобы воспользоваться этим режимом, вам не нужно вносить никаких изменений в код - просто создавайте базу и работайте как обычно.

Этот способ вполне подойдет людям, которым достаточно описанной функциональности, или в том случае, если решить проблемы, вызванные "корректной" работой с кодировкой, не удается.

Работа с правильной кодировкой (CP-1251)

Для работы с правильной кодировкой вам нужно с помощью средства управления базой, совместимого с mySQL 4, поменять кодировку таблиц. Удобнее это делать сразу после создания таблицы, чтобы поля унаследовали эту кодировку автоматом.
Внимание: не забывайте, что поменять кодировку таблицы после создания там полей недостаточно, убедитесь, что поля тоже имеют правильную кодировку!

Средства управления можно скачать с сайта www.mysql.com, например, mySQL Administrator.

Главное: Этот режим не до конца совместим с ПО, рассчитанным на работу с mySQL 3, таким, как mySQL Front и т.п., также не всегда получается нормально работать с клиентами - PHP, ODBC, и т.д. Если вместо русских букв вы видите знаки ’?’ - вы попали именно в такую ситуацию.
Большинство вопросов можно решить, воспользовавшись русскоязычными ресурсами по программированию, например, http://www.mysql.ru/.
Обычно достаточно следовать короткому совету (см. примечание 1).
Хранение и обработка русских символов во всех режимах осуществляется правильно.
Внимание: практика показывает, что изменять charset и collation на таблице, которая уже имеет данные, бесполезно - вы получите ’?’ вместо русских символов.

Примечание 1: Обычно для правильной работы с кодировкой CP1251 достаточно дать следующие команды после соединения с базой (это PHP код):

mysql_query ("set character_set_client=’cp1251’");
mysql_query ("set character_set_results=’cp1251’");
mysql_query ("set collation_connection=’cp1251_general_ci’");

Дополнительная информация

К сожалению, служба поддержки не может оказывать помощь по решению проблем кодировок mySQL 4/5. Количество средств программирования и способов использования базы слишком велико, чтобы описать каждый случай.

Практика показывает, что использование условно-правильного совместимого режима (latin1/latin1_binary), которое происходит по умолчанию, решает основную проблему работы с кодировкой (сортировку), и предоставляет хороший уровень обратной совместимости.

В случае продолжающихся проблем мы можем также рекомендовать вам пользоваться базой mySQL 3.*, для которой на нашем хостинге установлена традиционная кодировка cp1251 (Windows). Однако помните, что в этом случае вам придется работать с текстами в кодировке cp1251.

]]>
yentsun Aug 03, 2006, 08:12 AM https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353717
<![CDATA[Re: AjaxSearch &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089; &#1088;&#1091;&#1089;&#1082;&#1080;&#1084; &#1103;&#1079;&#1099;&#1082;&#1086;&#1084;?]]> https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353716 ]]> aleksey.stepanov Aug 03, 2006, 07:32 AM https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353716 <![CDATA[Re: AjaxSearch &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089; &#1088;&#1091;&#1089;&#1082;&#1080;&#1084; &#1103;&#1079;&#1099;&#1082;&#1086;&#1084;?]]> https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353715 http://www.etomite.org/forums/index.php?showtopic=859&hl=FlexSearchForm. Только конечно пришлось его модифицировать, чтобы понимал русский и латышский язык.
Вся фишка состояла в том, что нужно было использовать функции мультибайтных строк.
Вначале сниппета прописал mb_internal_encoding("UTF-8");, а затем все операции со строками (обрезание строки, приведение к одному регистру для сравнения и т.п.) проводились через эти же функции mb_substr(), mb_strtolower() и т.д. И все работает как надо smiley]]>
suhinin Aug 03, 2006, 06:05 AM https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353715
<![CDATA[Re: AjaxSearch &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089; &#1088;&#1091;&#1089;&#1082;&#1080;&#1084; &#1103;&#1079;&#1099;&#1082;&#1086;&#1084;?]]> https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353714 И здесь вроде бы работает, только ничего не находит, даже простейших комбинаций вроде 2006 - на любом языке одинаково пишется. )]]> iamask Aug 03, 2006, 05:12 AM https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353714 <![CDATA[Re: AjaxSearch &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089; &#1088;&#1091;&#1089;&#1082;&#1080;&#1084; &#1103;&#1079;&#1099;&#1082;&#1086;&#1084;?]]> https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353713
а так, есть какие-то заморочки с кодировкой, как я смутно припоминаю, потому что запрос уходит с формы на сайте, отправляется в мускул, а дальше происходит выборка по полям, причём совпадение должно быть с точностью до буквы, правда, без учёта регистра. лучше конкретизируй, в чём у тебя проблема?

:) yentsun на modx.ru поиск пришил, вот появится и расскажет.]]>
openagate Aug 03, 2006, 04:20 AM https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353713
<![CDATA[AjaxSearch &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1089; &#1088;&#1091;&#1089;&#1082;&#1080;&#1084; &#1103;&#1079;&#1099;&#1082;&#1086;&#1084;?]]> https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353712 iamask Aug 03, 2006, 03:51 AM https://forums.modx.com/thread/60940/ajaxsearch#dis-post-353712