JavaScript PHP 通过URLEncode字串判断其编码是UTF-8还是GBK

如题所述

JavaScript PHP é€šè¿‡URLEncode字串判断其编码是UTF-8还是GBK
例如给出字串:
    %B4%BA
或
    %E6%98%A5
如何判断应该是使用UTF-8还是GBK进行URLDecode?
思路1 é€šç”¨æ–¹æ³•ï¼š
假定它是 GBK çš„编码 ï¼Œåˆ™å°†å…¶è½¬æ¢æˆ utf-8 ç„¶åŽå†è½¬æ¢å›žæ¥åŽä¸Žæ²¡æœ‰è½¬æ¢ä¹‹å‰æ˜¯ç›¸ç­‰çš„。这样假设成立,也就是GBK编码。
思路2
iconv转换编码时 å¦‚果转换遇到错误 ä¼šæŠ›å‡ºå¼‚常 æ‰‘捉异常即可
    <?php
    //测试url编码到底是gbk è¿˜æ˜¯utf8编码
    $url="%B4%BA";
    check_type1($url);
    check_type2($url);
    function check_type1($url){
        //这是思路1
        $url=urldecode($url);
        $temp1=iconv("GBK","UTF-8",$url);
        $temp2=iconv("UTF-8","GBK",$temp1);
        //var_dump($temp1,$temp2);
        if($temp2==$url)
            echo 'it is gbk';
        else
            echo 'it is utf8';
    }

    function check_type2($url){
        //这是思路2
        $url=urldecode($url);
        @trigger_error('error', E_USER_NOTICE);
        $temp1=@iconv("GBK","UTF-8",$url);
        $error=error_get_last();
        if($error['message']!='error')
            echo "it is utf8";
        else
            echo 'it is gbk';
    }
    ?>
温馨提示:答案为网友推荐,仅供参考