找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 664|回复: 0

DEDE v5.6搜索关键词时出现乱码的解决办法

[复制链接]
发表于 2012-4-18 10:51:27 | 显示全部楼层 |阅读模式
DEDE v5.6模板搜索关键词时出现乱码怎么解决呢?找了很久终于找到了原因,原来是DEDE“中文截取2 ” cn_substr($str,$slen,$startdd=0) 的问题,如果大家也是这种情况,
可以这样来解决:
在模板文件里面用DW打开/include/common.func.php 文件,找到以下这段代码:
-----------------------------------------------------------------------------------------------------
//中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0)
{
global $cfg_soft_lang,$cfg_is_mb,$cfg_is_iconv;
//判断是否使用mb_substr
if($cfg_is_mb)
{
if($cfg_soft_lang=='utf-8') mb_internal_encoding("UTF-8");
return mb_substr($str, $startdd, $slen*2);
}
if($cfg_is_iconv)
{
return iconv_substr($str, $startdd, $slen*2);
}
if($cfg_soft_lang=='utf-8')
{
return cn_substr_utf8($str,$slen,$startdd);
}
$restr = '';
$c = '';
$str_len = strlen($str);
if($str_len  $startdd)
{
$restr .= $c;
}
if(ord($str[$i])>0x80)
{
if($str_len>$i+1)
{
$c = $str[$i].$str[$i+1];
}
$i++;
}
else
{
$c = $str[$i];
}
if($i >= $enddd)
{
if(strlen($restr)+strlen($c)>$slen)
{
break;
}
else
{
$restr .= $c;
break;
}
}
}
return $restr;
}

然后替换为:
//中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0)
{
global $cfg_soft_lang;
if($cfg_soft_lang=='utf-8')
{
return cn_substr_utf8($str,$slen,$startdd);
}
$restr = '';
$c = '';
$str_len = strlen($str);
if($str_len  $startdd)
{
$restr .= $c;
}
if(ord($str[$i])>0x80)
{
if($str_len>$i+1)
{
$c = $str[$i].$str[$i+1];
}
$i++;
}
else
{
$c = $str[$i];
}
if($i >= $enddd)
{
if(strlen($restr)+strlen($c)>$slen)
{
break;
}
else
{
$restr .= $c;
break;
}
}
}
return $restr;
}
这要就可以解决乱码的问题了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|要学吧论坛

GMT+8, 2026-1-24 01:14 , Processed in 0.032932 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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