导入、导出 中文乱码解决

1、前言

1、01编码:很久很久以前,为了表示二极管的通、分,我们引入的高电平、低电平,之后又引入的1、0编码进行代替

2、ASCII编码:上个世纪60年代,美国佬为了把计算机的“0101010”编码与文字进行对应起来,制定了一套ASCII编码方案。人总是自私的,他只对自己的语言进行编码,26个字母、数字、其他符号,只用了7位二进制数搞定,第一位用0表示,预留着。所以ASCII编码最多127编码

3、“二代”ASCII编码:不单单是美国佬想把计算机语言和英文联系起来,其他国家也想把自己的语言关联起来,如法文、俄文就基于ASCII编码,利用上ASCII第一位(未使用)变成1,来对自己国家的语言进行编码

4、gb2312编码:我们伟大的祖国80年代也开始对汉字进行编码,由于我们的文字较多,即使是基于ASCII将第一位变成1,也不够我们使用,所以就制定了一套gb2312编码,使用2个字节表示。

5、BIG5编码:我国的港澳地区,他们是使用繁体字(gb2312编码最初并没有考虑到繁体字),怎么办了?他们就出了自己的区域编码BIG5

6、中国一统GBK编码:为了统一汉字,迫切的需要设计出一种既能支持简体字又能表示繁体的新编码方案,GBK诞生了!他兼容了绝大部分gb2312编码(gb2312编码的文字用gbk可以读出来,但是不兼容BIG5编码)

7、世界大统unicode编码:各国编码各做各的,总不是意见好事,为了便于交流,国际社会引入了unicode——(uni统一的意思,code编码)把所有国家的文字都进行了编码

8、统一后浪费空间问题:统一是一件好事,但是也是有问题的。英文只要1个字节ASCII编码就可以表示,unicode还需要2个字节或更多,导致unicode表示英文的时候前面有很多无用的000000000000000000

9、解决问题,UTF编码:解决方法是使用utf8编码,它是基于unicode编码上的一种优化,英文使用1个字节,中文使用2、3个(绝大部分是3个,个别有看到2、4个的一般不用)字节。好处:我能屈能伸,我可以变化长度来保存,就不会浪费空间了吧。

2、PHP转码

iconv("gb2312", "utf-8", $string)

3、mb_convert_encoding与iconv

/**
     * Convert encoding.
     *
     * @param  string $string
     * @param  string $fromEncoding
     * @param  string $toEncoding
     * @static
     * @access public
     * @return string
     */
    static public function convertEncoding($string, $fromEncoding, $toEncoding = 'utf-8')
    {
        $toEncoding = str_replace('utf8', 'utf-8', $toEncoding);
        if(function_exists('mb_convert_encoding'))
        {
            /* Remove like utf-8//TRANSLIT. */
            $position = strpos($toEncoding, '//');
            if($position !== false) $toEncoding = substr($toEncoding, 0, $position);

            /* Check string encoding. */
            $encoding = strtolower(mb_detect_encoding($string, array('ASCII','UTF-8','GB2312','GBK','BIG5')));
            if($encoding == $toEncoding) return $string;
            return mb_convert_encoding($string, $toEncoding, $encoding);
        }
        elseif(function_exists('iconv'))
        {
            if($fromEncoding == $toEncoding) return $string;
            $convertString = @iconv($fromEncoding, $toEncoding, $string);
            /* iconv error then return original. */
            if(!$convertString) return $string;
            return $convertString;
        }

        return $string;
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值