亲注册登录道勤网-可以查看更多帖子内容哦!(包涵精彩图片、文字详情等)请您及时注册登录-www.daoqin.net
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近有一些站长朋友遇到通过后台用户管理搜索用户后导出,发现导出的用户数比实际的少的问题,下面一起分析下问题,然后找下解决方法。
问题分析:
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(提示: 使用mb_convert_encoding 函数需要开启mbstring模块)
打开:source/function/function_core.php
- 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;
- }
复制代码 更改为:
- 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;
- }
复制代码 上传覆盖,更新缓存即可解决。
但这个方法依然存在一定的不足,欢迎其他开发者提供更完美的解决方法。
道勤主机提供365天*24小时全年全天无休、实时在线、零等待的售后技术支持。竭力为您免费处理您在使用道勤主机过程中所遇到的一切问题!
如果您是道勤主机用户,那么您可以通过QQ【792472177】、售后QQ【59133755】、旺旺【诠释意念】、微信:q792472177免费电话、后台提交工单这些方式联系道勤主机客服!
如果您不是我们的客户也没问题,点击页面最右边的企业QQ在线咨询图标联系我们并购买后,我们为您免费进行无缝搬家服务,让您享受网站零访问延迟的迁移到道勤主机的服务! |