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;
.
暂无答案!
目前还没有任何答案,快来回答吧!