Discuz教程网

Discuz X2.5后台搜索用户导出比实际少的问题

[复制链接]
authicon dly 发表于 2012-11-30 18:06:23 | 显示全部楼层 |阅读模式
问题现象:
     后台用户管理搜索用户然后导出,导出的用户数比实际的少
问题分析:
     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) {
  2. global $_G;

  3. $in_charset = strtoupper($in_charset);
  4. $out_charset = strtoupper($out_charset);

  5. if(empty($str) || $in_charset == $out_charset) {
  6. return $str;
  7. }

  8. $out = '';

  9. if(!$ForceTable) {
  10. if(function_exists('iconv')) {
  11. $out = iconv($in_charset, $out_charset.'//IGNORE', $str);
  12. } elseif(function_exists('mb_convert_encoding')) {
  13. $out = mb_convert_encoding($str, $out_charset, $in_charset);
  14. }
  15. }

  16. if($out == '') {
  17. $chinese = new Chinese($in_charset, $out_charset, true);
  18. $out = $chinese->Convert($str);
  19. }

  20. return $out;
  21. }
复制代码

更改为:
  1. function diconv($str, $in_charset, $out_charset = CHARSET, $ForceTable = FALSE) {
  2. global $_G;

  3. $in_charset = strtoupper($in_charset);
  4. $out_charset = strtoupper($out_charset);

  5. if(empty($str) || $in_charset == $out_charset) {
  6. return $str;
  7. }

  8. $out = '';

  9. if(!$ForceTable) {
  10. if(function_exists('mb_convert_encoding')) {
  11. $out = mb_convert_encoding($str, $out_charset, $in_charset);
  12. }elseif(function_exists('iconv')) {
  13. $out = iconv($in_charset, $out_charset.'//IGNORE', $str);
  14. }
  15. }

  16. if($out == '') {
  17. $chinese = new Chinese($in_charset, $out_charset, true);
  18. $out = $chinese->Convert($str);
  19. }

  20. return $out;
  21. }
复制代码

提示: 使用mb_convert_encoding 函数需要开启mbstring模块



上一篇:Discuz X2.5 首页N格 推荐主题不显示
下一篇:Discuz X2.5 QQ互联升级到1.17报QQ互联APPKEY无效,错误代码:11000错误的解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 05:59

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表