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;
.