PhpMyAdmin如何只显示自己需要的字符集,隐藏掉不需要的字符集

之前写过个旧版本的PhpMyAdmin如何隐藏不需要字符储的博文,字符集太多,而我根本都用不到。

我用到的也就是gbk,utf8,utf8mb4

其它的都让他隐藏吧,否则我要改个字段选择字符集都让我头大。

版本:4.8.5 

版本:5.7.28 

修改文件:libraries/classes/Charsets.php

line 84行前,增加:if(!in_array($name,array('gbk','utf8','utf8mb4'))) continue;

下面代码段的第20行

private static function loadCharsets(DatabaseInterface $dbi, $disableIs)
    {
        /* Data already loaded */
        if (count(self::$_charsets) > 0) {
            return;
        }

        if ($disableIs) {
            $sql = 'SHOW CHARACTER SET';
        } else {
            $sql = 'SELECT `CHARACTER_SET_NAME` AS `Charset`,'
                . ' `DESCRIPTION` AS `Description`'
                . ' FROM `information_schema`.`CHARACTER_SETS`';
        }
        $res = $dbi->query($sql);

        self::$_charsets = array();
        while ($row = $dbi->fetchAssoc($res)) {			
            $name = $row['Charset'];
			if(!in_array($name,array('gbk','utf8','utf8mb4'))) continue; //注意这里
            self::$_charsets[] = $name;
            self::$_charsets_descriptions[$name] = $row['Description'];
        }
        $dbi->freeResult($res);

        sort(self::$_charsets, SORT_STRING);
    }

line 120 左右,增加一个判断,如下函数:

下面代码段的第22行

private static function loadCollations(DatabaseInterface $dbi, $disableIs)
    {
        /* Data already loaded */
        if (count(self::$_collations) > 0) {
            return;
        }

        if ($disableIs) {
            $sql = 'SHOW COLLATION';
        } else {
            $sql = 'SELECT `CHARACTER_SET_NAME` AS `Charset`,'
                . ' `COLLATION_NAME` AS `Collation`, `IS_DEFAULT` AS `Default`'
                . ' FROM `information_schema`.`COLLATIONS`';
        }

        $res = $dbi->query($sql);
		//print_r($res);exit();
        while ($row = $dbi->fetchAssoc($res)) {			
            $char_set_name = $row['Charset'];
            $name = $row['Collation'];
			//注意下面这一句
			if(!in_array($name,array('utf8_general_ci','gbk_chinese_ci','utf8mb4_general_ci'))) continue;
            self::$_collations[$char_set_name][] = $name;
            if ($row['Default'] == 'Yes' || $row['Default'] == '1') {
                self::$_default_collations[$char_set_name] = $name;
            }
        }
        $dbi->freeResult($res);
        foreach (self::$_collations as $key => $value) {
            sort(self::$_collations[$key], SORT_STRING);
        }
    }

代码里有注意提示的那一句,第一个函数是大类,utf8,gbk之类的,第二个函数是小类。根据自己的需要判断处理就可以了。留个笔记。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值