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

romagromov

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



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

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

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #1 : 22.01.2019, 07:26:58 »
-
« Последнее редактирование: 17.07.2019, 16:04:28 от Support »
*

ChaosHead

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

AlekVolsk

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

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

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #4 : 22.01.2019, 07:49:58 »
-
« Последнее редактирование: 17.07.2019, 16:04:17 от Support »
*

AlekVolsk

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

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #6 : 22.01.2019, 10:06:54 »
-
« Последнее редактирование: 17.07.2019, 16:04:04 от Support »
*

dmitry_stas

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

effrit

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

AlekVolsk

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

romagromov

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

AlekVolsk

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

ChaosHead

  • Гуру
  • 5242
  • 451 / 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

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

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

voland

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

AlekVolsk

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

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #16 : 22.01.2019, 22:46:39 »
-
« Последнее редактирование: 17.07.2019, 16:03:50 от Support »
*

dmitry_stas

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

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #18 : 22.01.2019, 23:44:28 »
-
« Последнее редактирование: 17.07.2019, 16:03:38 от Support »
*

dmitry_stas

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

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
Re: Кириллица в MySQL записывается в Unicode
« Ответ #20 : 23.01.2019, 08:49:30 »
предусмотрено изменение кодировки в таких вот json данных, смысла нет показывать, подсказывать и т.п., задача все равно за рамками бюджета 
Что-то Вы какую-то фигню сказали, а объяснять не хотите - бюджетом прикрываетесь. У нас тут не принято фигню говорить и делать вид, что что-то умное сказали. Или будьте готовы объяснить, или вообще не пишите. В теме ведь не только для ТС ответы и вопросы даются - мало ли кому и когда еще пригодится.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

Support

  • Захожу иногда
  • 114
  • 1 / 2
-
« Ответ #21 : 23.01.2019, 13:05:21 »
-
« Последнее редактирование: 17.07.2019, 16:03:24 от Support »
*

romagromov

  • Давно я тут
  • 692
  • 9 / 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

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

Septdir

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

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

ChaosHead

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

romagromov

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

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

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

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

*

Septdir

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

romagromov

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

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

Arkadiy

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

Обновление MySQL

Автор Akki

Ответов: 3
Просмотров: 617
Последний ответ 09.03.2021, 23:14:51
от wishlight
Joomla! 4 - Joomla! 3.9 - Joomla! 3.9.12 и MySQL 8 почему не работает?

Автор Igor5

Ответов: 1
Просмотров: 1636
Последний ответ 21.10.2019, 13:29:37
от zikkuratvk
Отваливается MySQL сервер, не получается разобрать логи

Автор dm-krv

Ответов: 13
Просмотров: 1805
Последний ответ 22.04.2019, 22:00:48
от flyingspook
Error: Failed to start application: Could not connect to MySQL server

Автор nae

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

Автор tmpnikl

Ответов: 1
Просмотров: 1936
Последний ответ 16.10.2017, 11:53:17
от dmitry_stas