mysql - 如何将 Joomla unicode 字符从数据库更改为 utf8 字符串?
问题描述
Joomla 将数据库表中的特殊字符保存为 unicode 字符。例如,在管理面板的表单字段中,我有单词wyższe
,但在数据库中,这个单词被更改为wy\u017csze
. 当我从数据库中选择这个值并作为 HTML 字符串回显时,这个词中仍然有坏字符。非常奇怪的是,管理面板中的单词有正确的字母,并且显示为wyższe
. 为什么当我想通过组件 ( JFactory::getDbo();
) 的 php 代码打印此值时,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;
.
解决方案
推荐阅读
- reactjs - 在父组件的 DOM 层次结构之外插入组件的新实例 onClick
- html - 隐藏特定组件中的导航栏
- ruby-on-rails - graphql ruby 单元测试
- leaflet - 如何在javascript中刷新传单地图
- r - 在使用 r 中的 auto.arima 进行预测之前,我应该使用 ts 函数吗?
- amazon-web-services - 来自 AWS 中私有子网的出站流量
- azure - 如何恢复到 Azure Function App 的经典身份验证
- ios - prefersLargeTitles 属性中文本的字体属性是什么?
- python - 调用 tf.data.Dataset.map 时未更新全局变量
- kubernetes - Kubernetes:“Liveness probe failed:rm: cannot remove '/tmp/healthy': No such file or directory”