如何将joomlaunicode字符从数据库更改为utf8字符串?

vh0rcniy  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(252)

joomla将数据库表中的特殊字符保存为unicode字符。例如,在管理面板的表单字段中,我有word 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;

在“用户配置文件”选项卡的“编辑配置文件”页的“管理”面板中,输入文本字段中的单词具有正确的字符。但是,当我试图从组件的同一列中获取值时,这个词仍然包含那些unicode字符。
一切都与“用户配置文件”选项卡中的字段有关。即使您填写标准文本字段,例如 City ,该单词用unicode字符保存在数据库中。当它从数据库加载到文本字段中时,将进行转换,并且单词是正确的。当我使用joomla标准查询(见上文)在我的组件的子页面上查看这个值时,问题就出现了。word仍以unicode字符串打印。joomla保存 User Profile 以unicode格式插入数据库。为什么当我想通过标准joomla sql查询得到这些值时,这些值仍然以unicode格式打印,而不像joomla那样打印?
重要提示:一件事。在数据库中,输入文本字段的值用引号保存,但在 User Profile “管理”面板中的“编辑”页加载时不带引号。我的sql查询用引号打印这些值。所以问题是。joomla安装的哪个文件负责打印此选项卡中的文本字段?
解决方法:这些值用引号保存在数据库中,因为joomla在保存时将它们转换为 json 价值观。因此,如果要打印那些不带引号和unicode字符的值,应该使用 return json_decode($results); 相反 return $results; .

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题