·设为首页收藏本站📧邮箱修改🎁免费下载专区🔐设置/修改密码👽群雄群聊
返回列表 发布新帖

后台搜索用户导出比实际少的问题

292 2
发表于 2020-7-7 10:19:02 | 显示全部楼层 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
问题现象:
     后台用户管理搜索用户然后导出,导出的用户数比实际的少
问题分析:
     Discuz! 函数中的使用的是diconv函数进行的转换,通过调试发现转换为GBK编码的时候使用iconv函数进行转换时,字符被截取了。但是 $out = iconv($in_charset, $out_charset.'//IGNORE', $str);  是带有 ‘//IGNORE ’  代表遇到转换不了的字符忽略,然而还是被截取了。最后查资料发现是iconv的bug,将iconv从‘glibc’ 更改为  ‘libiconv ’ (重新编译iconv模块)  或者,使用 mb_convert_encoding来进行转换
解决方法:
    1、 Linux环境重新编译iconv, 从‘glibc’ 更改为  ‘libiconv ’ (具体编译请到网上搜索相关资料)
    2、使用mb_convert_encoding  代替 iconv   
     打开:source/function/function_core.php
  1. function diconv($str, $in_charset, $out_charset = CHARSET, $ForceTable = FALSE) {        global $_G;        $in_charset = strtoupper($in_charset);        $out_charset = strtoupper($out_charset);        if(empty($str) || $in_charset == $out_charset) {                return $str;        }        $out = '';        if(!$ForceTable) {                if(function_exists('iconv')) {                        $out = iconv($in_charset, $out_charset.'//IGNORE', $str);                } elseif(function_exists('mb_convert_encoding')) {                        $out = mb_convert_encoding($str, $out_charset, $in_charset);                }        }        if($out == '') {                $chinese = new Chinese($in_charset, $out_charset, true);                $out = $chinese->Convert($str);        }        return $out;}
复制代码
更改为:
  1. function diconv($str, $in_charset, $out_charset = CHARSET, $ForceTable = FALSE) {        global $_G;        $in_charset = strtoupper($in_charset);        $out_charset = strtoupper($out_charset);        if(empty($str) || $in_charset == $out_charset) {                return $str;        }        $out = '';        if(!$ForceTable) {                if(function_exists('mb_convert_encoding')) {                        $out = mb_convert_encoding($str, $out_charset, $in_charset);                }elseif(function_exists('iconv')) {                        $out = iconv($in_charset, $out_charset.'//IGNORE', $str);                }         }        if($out == '') {                $chinese = new Chinese($in_charset, $out_charset, true);                $out = $chinese->Convert($str);        }        return $out;}
复制代码
提示: 使用mb_convert_encoding 函数需要开启mbstring模块
我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论2

CrystαlLv.8 发表于 2020-7-7 10:19:58 | 显示全部楼层
:):)收藏啦~
我要说一句 收起回复
独家记忆Lv.8 发表于 2020-7-7 10:20:31 | 显示全部楼层
收藏,备用一下
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:52.90.40.84,118.180.40.71,GMT+8, 2024-3-28 16:02 , Processed in 0.228036 second(s), 89 queries , Gzip On, Redis On.

Based on Discuz! W1.0 Licensed

© 2001-2024 Discuz! Team.

关灯 快速发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表