首页 » 漏洞 » ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法

ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法

 

ecshop 2.7.3 gbk版官方版本安装之后,当我们推荐某个产品的时候,“我的推荐”中的效果出现乱码。

ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法
如图所示,非常让人恼火。

打开源码
ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法

可以看到都是乱码。
http://www.maiseed.com/affiliate ... gid=60&u=367&type=1

经过一番追查,这个文件就是我们的效果源代码,单独打开这个链接看看。

ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法

中文乱码,那么可以确认就是这类出现问题了,我们查看一下这个页面的编码。

ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法

果然不出所料,这个页面的编码是utf-8,那中文肯定乱码了啊。

这就说明affiliate.php输出这段代码的时候,header头部的编码是utf-8,而不是gbk。

解决这个问题就好了。

解决办法:

首先把这个文件保存为gbk编码的。

第二步,
在约31行

if ( $display_mode == 'javascript' )
{
    $charset_array=array('UTF8','GBK','gbk','utf8','GB2312','gb2312');
    if(!in_array($charset,$charset_array))
    {
         $charset='UTF8';
    }
    header('content-type: application/x-javascript; charset=' . ($charset == 'UTF8' ? 'utf-8' : $charset));
}

从这段代码的意思可以看出当$charset的值不在$charset_array这个数组的时候$charset就为UTF8;从代码来看应当是没问题,在这里$charset应当是gbk,但是不知为何程序没有这样判断,程序认为$charset的值不在这个数组里面,所以$charset='UTF8';所以就出现了我们这个乱码的问题,那么解决办法也就简单了,本来我们就是gbk版本,所以我们修改UTF8为gbk就可以了。即把上面代码修改为

if ( $display_mode == 'javascript' )
{
    $charset_array=array('UTF8','GBK','gbk','utf8','GB2312','gb2312');
    if(!in_array($charset,$charset_array))
    {
         $charset='gbk';
    }
    header('content-type: application/x-javascript; charset=' . ($charset == 'UTF8' ? 'utf-8' : $charset));
}

这样我们的header就能获得charset=gbk的值了,我们问题也就解决了。

ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法

原文链接:ecshop 2.7.3 gbk版“我的推荐”中效果出现乱码的解决办法,转载请注明来源!

0