0 Пользователей и 1 Гость просматривают эту тему.
  • 29 Ответов
  • 750 Просмотров
*

romagromov

  • Давно я тут
  • 520
  • 7 / 3
Здравствуйте!
Все, что пишется в базу из полей типа metadata пишется в Unicode кодировке.



Таким образом, невозможно выполнить базовые операции, типа поиска по словам...

Это реально как-то исправить?
Чтобы писалось например в UTF-8.
Спасибо.
*

Support

  • Захожу иногда
  • 121
  • 1 / 0
  • 24/7
Re: Кириллица в MySQL записывается в Unicode
« Ответ #1 : 22.01.2019, 07:26:58 »
только правкой, так называемого ядра Joomla в нужном месте  ^-^ а так, да, тема интересная
хотя... в версии 3.9 они предусмотрели этот нюанс, тогда на уровне компонента можно попробовать решить  ^-^
« Последнее редактирование: 22.01.2019, 07:37:58 от Support »
Доработка Joomla по мелочи
Познакомлюсь с контент менеджером
Без паники. Мы обязательно договоримся )
*

ChaosHead

  • Гуру
  • 5092
  • 440 / 13
Re: Кириллица в MySQL записывается в Unicode
« Ответ #2 : 22.01.2019, 07:33:11 »
Плагин написать, который при сохранении материала будет писать в отдельное поле так, как вам нужно. По этому полю искать.
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Кириллица в MySQL записывается в Unicode
« Ответ #3 : 22.01.2019, 07:40:08 »
а ничего, что на скрине в полях json записан, который всегда юникод кодирует? получите значение поля, декодируйте json в массив или объект и получите необходимый параметр в нормальном виде )

а при поиске по базе просто сразу кодировать строку и подставлять в запрос кодированое значение
« Последнее редактирование: 22.01.2019, 07:43:22 от AlekVolsk »
*

Support

  • Захожу иногда
  • 121
  • 1 / 0
  • 24/7
Re: Кириллица в MySQL записывается в Unicode
« Ответ #4 : 22.01.2019, 07:49:58 »
не, ядро поправить проще, обычному пользователю это все равно не надо, так если только для собственного сайта  ^-^ а если под разработку, то и бюджет наверно другой - которого нет - с таким поиском нетривиальным 
Доработка Joomla по мелочи
Познакомлюсь с контент менеджером
Без паники. Мы обязательно договоримся )
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Кириллица в MySQL записывается в Unicode
« Ответ #5 : 22.01.2019, 09:49:47 »
ядро вы никак не поправите, кодирование происходит на уровне сборки json-строки (или вы перепишете функцию json_encode?)
поправив базу, вы столкнётесь с этим снова при последующем сохранении записей
поиск поправить проще, написав соответствующий плагин
да и что вы искать-то собрались внутри джейсона? он не предназначен для поиска
*

Support

  • Захожу иногда
  • 121
  • 1 / 0
  • 24/7
Re: Кириллица в MySQL записывается в Unicode
« Ответ #6 : 22.01.2019, 10:06:54 »
почему, нет? здесь просто речь уже идет о библиотеке php версии >= 5.4 и ничего переписывать не надо, другой вопрос - в Joomla предусмотрено и отсутствие json кодирования в сборке php, там как раз переписанная функция под это дело
 ^-^ так что ядро это можно вертеть как говорится - при желании
Доработка Joomla по мелочи
Познакомлюсь с контент менеджером
Без паники. Мы обязательно договоримся )
*

dmitry_stas

  • Легенда
  • 12623
  • 1184 / 8
Re: Кириллица в MySQL записывается в Unicode
« Ответ #7 : 22.01.2019, 10:14:30 »
да там вообще это не нужно по сути, только базу раздувает. надо пулл просто сделать, в json_encode флаг JSON_UNESCAPED_UNICODE добавить
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

effrit

  • Легенда
  • 9416
  • 1029 / 11
  • effrit.com
Re: Кириллица в MySQL записывается в Unicode
« Ответ #8 : 22.01.2019, 10:21:33 »
для меня вообще загадка, на кой черт перешли на кодирование.
помню что-то про поддержку эмодзи. вот это прямо то самое, ради чего надо в разы увеличивать место под базу и делать текст в ней нечитаемым.
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Кириллица в MySQL записывается в Unicode
« Ответ #9 : 22.01.2019, 10:56:02 »
в таких случаях надо глобальный параметр иметь, который будет по всему ядру применяться, а не хакать всё подряд
*

romagromov

  • Давно я тут
  • 520
  • 7 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #10 : 22.01.2019, 11:56:02 »
Смотрите, мне нужен не только поиск. Я еще хочу работать с этими данные, например сторонним скриптом сделать перевод текстов с помощью Google Translate.
Я вообще не понимаю, почему некоторые данные категории хранятся в отдельном поле и кодировке UTF-8, например Metadesc, а Page title - в Unicode и JSON.
Почему нельзя было просто отдельное поле создать, также, как для других данных...
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Кириллица в MySQL записывается в Unicode
« Ответ #11 : 22.01.2019, 12:27:23 »
Я еще хочу работать с этими данные, например сторонним скриптом сделать перевод текстов с помощью Google Translate.
для этого не надо цепляться к базе напрямую, а работать через регистры объектов Joomla
*

ChaosHead

  • Гуру
  • 5092
  • 440 / 13
Re: Кириллица в MySQL записывается в Unicode
« Ответ #12 : 22.01.2019, 14:25:55 »
для меня вообще загадка, на кой черт перешли на кодирование.
помню что-то про поддержку эмодзи
Для эмодзи вроде меняли кодировку таблиц на utf8mb4_unicode_ci

Я вообще не понимаю, почему некоторые данные категории хранятся в отдельном поле и кодировке UTF-8, например Metadesc, а Page title - в Unicode и JSON.
Почему нельзя было просто отдельное поле создать, также, как для других данных...
Разные люди делали и как видите вы первый, кому пришло в голову искать именно по Page title. Большинству очевидно хватает поиска по Title и содержимому материала. Вряд ли же вы впишите какой-то важный ключевик в Page title, а в тексте статьи нигде не упомянёте его. Это будет странно по крайней мере.

Ну и в Joomla можно юзать умный поиск, там чуть переделать плагин и можно индексировать хоть что.
« Последнее редактирование: 22.01.2019, 14:32:31 от ChaosHead »
*

romagromov

  • Давно я тут
  • 520
  • 7 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #13 : 22.01.2019, 15:40:24 »
для этого не надо цепляться к базе напрямую, а работать через регистры объектов Joomla

Скрипт универсальный. Он именно цепляется к базе сайта не важно какого движка.
*

voland

  • Легенда
  • 10346
  • 555 / 108
  • Эта строка съедает место на вашем мониторе
Re: Кириллица в MySQL записывается в Unicode
« Ответ #14 : 22.01.2019, 15:53:33 »
Скрипт универсальный. Он именно цепляется к базе сайта не важно какого движка.
Какой еще скрипт?
Мы тут на форуме Joomla
*

AlekVolsk

  • Гуру
  • 6683
  • 386 / 4
Re: Кириллица в MySQL записывается в Unicode
« Ответ #15 : 22.01.2019, 18:04:12 »
Скрипт универсальный. Он именно цепляется к базе сайта не важно какого движка.
у Joomla есть свои правила и она не собирается под вас подстраиваться, а ваш скрипт получается недостаточно универсален, чтобы уметь искать в в кодированном юникоде, значит проблема в вашем скрипте, а не базе Joomla, решайте проблемы со скриптом, не ломая сайт
*

Support

  • Захожу иногда
  • 121
  • 1 / 0
  • 24/7
Re: Кириллица в MySQL записывается в Unicode
« Ответ #16 : 22.01.2019, 22:46:39 »
в 3.9 это предусмотрено и допускается и вероятно можно решить вопрос на уровне компонента, доработка компонентов обычное дело, просто это задача нетривиальная - надо смотреть типа думать и т.п.
Доработка Joomla по мелочи
Познакомлюсь с контент менеджером
Без паники. Мы обязательно договоримся )
*

dmitry_stas

  • Легенда
  • 12623
  • 1184 / 8
Re: Кириллица в MySQL записывается в Unicode
« Ответ #17 : 22.01.2019, 23:32:09 »
в 3.9 это предусмотрено и допускается
немного не пойму, а что именно предусмотрено? можете скрин показать, о чем речь?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Support

  • Захожу иногда
  • 121
  • 1 / 0
  • 24/7
Re: Кириллица в MySQL записывается в Unicode
« Ответ #18 : 22.01.2019, 23:44:28 »
предусмотрено изменение кодировки в таких вот json данных, смысла нет показывать, подсказывать и т.п., задача все равно за рамками бюджета 
Доработка Joomla по мелочи
Познакомлюсь с контент менеджером
Без паники. Мы обязательно договоримся )
*

dmitry_stas

  • Легенда
  • 12623
  • 1184 / 8
Re: Кириллица в MySQL записывается в Unicode
« Ответ #19 : 22.01.2019, 23:47:03 »
понятно. нет значит нет.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Taatshi

  • Глобальный модератор
  • 4994
  • 466 / 1
  • Верстаем и немножко кодим. Обращайтесь ;)
Re: Кириллица в MySQL записывается в Unicode
« Ответ #20 : 23.01.2019, 08:49:30 »
предусмотрено изменение кодировки в таких вот json данных, смысла нет показывать, подсказывать и т.п., задача все равно за рамками бюджета 
Что-то Вы какую-то фигню сказали, а объяснять не хотите - бюджетом прикрываетесь. У нас тут не принято фигню говорить и делать вид, что что-то умное сказали. Или будьте готовы объяснить, или вообще не пишите. В теме ведь не только для ТС ответы и вопросы даются - мало ли кому и когда еще пригодится.
*

Support

  • Захожу иногда
  • 121
  • 1 / 0
  • 24/7
Re: Кириллица в MySQL записывается в Unicode
« Ответ #21 : 23.01.2019, 13:05:21 »
ок, пусть останется фигней, выбираю второе условие по теме, спасибо  ^-^
Доработка Joomla по мелочи
Познакомлюсь с контент менеджером
Без паники. Мы обязательно договоримся )
*

romagromov

  • Давно я тут
  • 520
  • 7 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #22 : 23.01.2019, 13:28:16 »
у Joomla есть свои правила и она не собирается под вас подстраиваться
Я не собираюсь под старивать Joomla под себя. Я пытаюсь решить проблему.
И внятно так никто и не объяснил, почему в материалов, меню, категорий Joomla хранит данные комбинировано, обычный текст, а потом вдруг с какого-то перепугу JSON в Юникоде... Вот смотрите:



Это конкретно по категориям Joomla.
Зачем делать Meta Desc в отдельном поле, А Meta Title и Robots выносить в JSON?
Где логика?
Почему не сделать отдельное поле для каждого параметра?

PS И кстати, заменил прямо в базе на нормальный текст и все работает на сайте.
« Последнее редактирование: 23.01.2019, 13:36:44 от romagromov »
*

dmitry_stas

  • Легенда
  • 12623
  • 1184 / 8
Re: Кириллица в MySQL записывается в Unicode
« Ответ #23 : 23.01.2019, 13:38:51 »
Где логика?
Почему не сделать отдельное поле для каждого параметра?
потому что видимо никто не предполагал что кто-то с помощью некого "универсального скрипта" будет пытаться там что то искать.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Septdir

  • Живу я здесь
  • 2986
  • 148 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #24 : 23.01.2019, 19:47:55 »
И внятно так никто и не объяснил, почему в материалов, меню, категорий Joomla хранит данные комбинировано, обычный текст, а потом вдруг с какого-то перепугу JSON в Юникоде... Вот
Ну по умолчанию закодирование в json всегда идет в unicode.
json можно закодировать чтобы была кириллица.
Не сделали потому что ни кому не нужно было, чтобы в параметрах или мете искало.
Если хотите можно лично вам закодировать с киррилицей. Сделать плагин и готово.
Милости просим в коммерческий раздел.

Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

ChaosHead

  • Гуру
  • 5092
  • 440 / 13
Re: Кириллица в MySQL записывается в Unicode
« Ответ #25 : 23.01.2019, 20:14:06 »
И внятно так никто и не объяснил, почему в материалов, меню, категорий Joomla хранит данные комбинировано, обычный текст, а потом вдруг с какого-то перепугу JSON в Юникоде...
Проект открытый, кодят разные люди. Пришел любитель JSON, накодил так. Впринципе страшного ничего, т.к. по этим полям нет сортировки.
*

romagromov

  • Давно я тут
  • 520
  • 7 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #26 : 30.01.2019, 20:14:08 »
потому что видимо никто не предполагал что кто-то с помощью некого "универсального скрипта" будет пытаться там что то искать.

Я понимаю. Но мое мнение, нужно делать либо так, либо так. А мешать в одной таблице разные способы хранения это на мой взгляд срамота ))
Я то нашел выход из ситуации. Но все это для меня загадка...

Ну по умолчанию закодирование в json всегда идет в unicode.
json можно закодировать чтобы была кириллица.
Не сделали потому что ни кому не нужно было, чтобы в параметрах или мете искало.
Если хотите можно лично вам закодировать с киррилицей. Сделать плагин и готово.
Милости просим в коммерческий раздел.
Да понятно, что в Unicode. Вопрос в том, что зачем городить огород, если можно писать в UTF8 - без всяких JSON? как это сделано в других полях.  ;D

Впринципе страшного ничего, т.к. по этим полям нет сортировки.
Сортировки нет. А если кто-то напишет плагин для поиска по сайту, который будет там тоже искать? В дескрипшинах, титлах, да где угодно.
Ну то такое, вопрос риторический.

*

Septdir

  • Живу я здесь
  • 2986
  • 148 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #27 : 30.01.2019, 20:19:39 »
А если кто-то напишет плагин для поиска по сайту, который будет там тоже искать? В дескрипшинах, титлах, да где угодно.
Ну то такое, вопрос риторический.
Ну json для него проблемой не будет.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | Workshop
*

romagromov

  • Давно я тут
  • 520
  • 7 / 3
Re: Кириллица в MySQL записывается в Unicode
« Ответ #28 : 30.01.2019, 21:01:05 »
Ну json для него проблемой не будет.

Да, но это дополнительный гемор.
*

Arkadiy

  • Гуру
  • 5270
  • 461 / 2
  • Крепитесь, други.
Re: Кириллица в MySQL записывается в Unicode
« Ответ #29 : 01.02.2019, 16:06:48 »
Да понятно, что в Unicode. Вопрос в том, что зачем городить огород, если можно писать в UTF8 - без всяких JSON?
Потому, что поле metadesc содержит информацию об одной сущности а в поле metadata записано несколько сущностей. Видимо посчитали эти мета-теги не важными для поиска и других манипуляций с БД.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отваливается MySQL сервер, не получается разобрать логи

Автор dm-krv

Ответов: 6
Просмотров: 56
Последний ответ Сегодня в 09:02:08
от dm-krv
Error: Failed to start application: Could not connect to MySQL server

Автор nae

Ответов: 2
Просмотров: 694
Последний ответ 14.08.2018, 14:23:28
от draff
Какая версия MySQL

Автор tmpnikl

Ответов: 1
Просмотров: 585
Последний ответ 16.10.2017, 11:53:17
от dmitry_stas
XAMPP не загружается mysql

Автор GromoOtVot

Ответов: 3
Просмотров: 505
Последний ответ 21.08.2017, 16:58:48
от GromoOtVot
Кодировка соединения с MySQL

Автор vita1971

Ответов: 1
Просмотров: 550
Последний ответ 15.08.2017, 13:32:38
от SeBun