thinkphp -- 解决连接mssql后台管理菜单显示中文乱码问题(备忘)

一开始使用的是mysql,数据库的编码是UTF-8

后来换数据库,mysql换成mssql2005,数据库编码为GBK,管理菜单出现乱码,如下所示(左图正常,右图乱码)

解决方法如下:

第一,查看数据库,找到数据表:ch_node,找到需要进行转码的字段

第二,打开 “ 项目名/Admin/Lib/Action/UiAction.class.php”

public function menu($from='') {} 中,将读取出来的中文字段进行转码

如上图,添加红色框标志的中文转码后,保存,刷新界面,正常显示了。

 

 

如果是“文章管理”的下一级栏目乱码,如图红框部分是乱码显示的情况!@_@~

看下数据库,数据表 ch_category,找到需要进行转码的字段,

^_^ 还是进行转码处理!!

打开 项目名/Admin/Lib/Model/CategoryModel.class.php

找到下面这个函数:

public function tree($map=array('classpid'=>0),$link='',$selparent=''){}

修改如下:

public function tree($map=array('classpid'=>0),$link='',$selparent=''){
        $return = '';
        if($link==''){
            if($_REQUEST['cid']!='' || $_REQUEST['cname']!=''){ //附加“清空”按钮
                $return .= '<ul class="tree treeFolder">';
                $return .= '    <li><a href="javascript:;" style="color:red" onclick="$(\'#'.$_REQUEST['cid'].'\').val(\'\');$(\'#'.$_REQUEST['cname'].'\').val(\'\');">清空重置</a></li>';
                $return .= '</ul>';
            }
        }
        $list = M('Category')->field('classid,classpid,classtitle,classchild,classarrchildids, classmodule')->where($map)->select();
        if($list){
            if($link=='info_addview'){
                $return .= '<ul>';
            }else{
                $return .= '<ul class="tree treeFolder expand collapse">';
            }
            foreach($list as $rs){
                if($rs['classpid']==0){
                    if($link=='edit'){
                        $strlink = 
                        '<a class="edit" href="__APP__/Category/edit/classid/'.$rs['classid'].'" target="dialog" width="700" height="550" rel="'.$rs['classid'].'">'.iconv('GBK','UTF-8',$rs['classtitle']).'</a>';
                    }elseif($link=='info_addview'){
                        $strlink = 
                        '<a class="info_addview" href="__APP__/'.$rs['classmodule'].'/index/tid/'.$rs['classid'].'" target="navTab" rel="'.$rs['classmodule'].'">'.iconv('GBK','UTF-8',$rs['classtitle']).'</a>';                        
                    }else{
                        $strlink = 
                        '<a href="javascript:;"'.(($selparent || !$rs['classchild']) ? ' onclick="selectClass(\''.$rs['classid'].'\',\''.iconv('GBK','UTF-8',$rs['classtitle']).'\');"' : '').'>'.iconv('GBK','UTF-8',$rs['classtitle']).'</a>';
                    }                    
                    if($rs['classchild']==0){
                        $return .= '<li>'.$strlink.'</li>';
                    }else{
                        $return .= '<li>'.$strlink;
                        $return .= $this->_for_tree($rs['classarrchildids'], $link, $selparent);
                        $return .= '</li>';
                    }
                }            
            }
            $return .= '</ul>';
        }
        return $return;
    }

这样就不会出现乱码啦。如果有别的菜单栏目需要转码,也是按照上面的做法,找到相应的代码文件,进行代码修改。

(^_^)~   完~

posted @ 2014-07-28 17:15  lmei  阅读(634)  评论(0编辑  收藏  举报