Как изменить Unicode-символ Joomla из базы данных в строку utf8? - PullRequest
0 голосов
/ 28 апреля 2018

Joomla сохраняет специальные символы в таблице базы данных как символы Юникода. Например, в поле формы из панели администрирования у меня есть слово wyższe, но в базе данных это слово изменяется на wy\u017csze. Когда я ВЫБИРАЮ это значение из базы данных и отображаю его как строку HTML, в слове по-прежнему присутствуют плохие символы. Очень странно, что в форме из административной панели слово имеет правильную букву и выглядит как wyższe. Почему, когда я хочу напечатать это значение через мой php-код компонента (JFactory::getDbo();), стиль Unicode не хочет исчезать?

        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $query->select($db->quoteName('profile_value'))
            ->from($db->quoteName('#__user_profiles'))
            ->where($db->quoteName('profile_key') . ' = "profile.wyksztalcenie"')
            ->where($db->quoteName('user_id') . '=' . (int) $id)
        ;

        $db->setQuery($query);
        $results = $db->loadResult();

        return $results;

В панели администрирования на странице редактирования профиля на вкладке Профиль пользователя слово в поле ввода текста содержит правильные символы. Но когда я пытаюсь получить значение из того же столбца для моего компонента, у этого слова все еще есть те символы Юникода.

Все относится к полям на вкладке «Профиль пользователя». Даже если вы заполните стандартное текстовое поле, например, City, слово сохраняется в базе данных с символами Юникода. При загрузке из базы данных в текстовое поле преобразуется и слово корректно. Проблема возникает, когда я использую стандартные запросы Joomla (см. Выше) для просмотра этих значений на подстранице моего компонента. Слово печатается по-прежнему в виде строки Unicode. Joomla сохраняет значения из текстовых полей вкладки User Profile в базу данных в формате Unicode. Почему, когда я хочу получить эти значения с помощью стандартных SQL-запросов Joomla, эти значения печатаются по-прежнему в формате Unicode, а не так, как это делает Joomla?

ВАЖНО : Одно. В базе данных значения вводимых текстовых полей сохраняются в кавычках, но на странице редактирования User Profile в панели администрирования они загружаются без кавычек. Мой запрос sql распечатать эти значения в кавычках. Так что вопрос в том. Какой файл установки Joomla отвечает за печать текстовых полей на этой вкладке?

решено : эти значения сохраняются в базе данных с кавычками, поскольку Joomla при сохранении преобразует их в значения json. Поэтому, если вы хотите напечатать эти значения без кавычек и без символов Юникода, вам следует использовать return json_decode($results); вместо return $results;.

...