zoukankan      html  css  js  c++  java
  • php 编码问题解决

     public function unescape($str)
        {
            $ret = '';
            $len = strlen($str);
            for ($i = 0; $i < $len; $i ++)
            {
                if ($str[$i] == '%' && $str[$i + 1] == 'u')
                {
                    $val = hexdec(substr($str, $i + 2, 4));
                    if ($val < 0x7f)
                        $ret .= chr($val);
                    else
                        if ($val < 0x800)
                            $ret .= chr(0xc0 | ($val >> 6)) .
                                chr(0x80 | ($val & 0x3f));
                        else
                            $ret .= chr(0xe0 | ($val >> 12)) .
                                chr(0x80 | (($val >> 6) & 0x3f)) .
                                chr(0x80 | ($val & 0x3f));
                    $i += 5;
                } else
                    if ($str[$i] == '%')
                    {
                        $ret .= urldecode(substr($str, $i, 3));
                        $i += 2;
                    } else
                        $ret .= $str[$i];
            }
            return $ret;
        }
    

    javascript有编码函数escape()和对应的解码函数unescape(),而php中只有个urlencode和urldecode,这个编码和解码函数对encodeURI和encodeURIComponent有效,但是对escape的是无效的。
    javascript中的escape()函数和unescape()函数用户字符串编码,类似于php中的urlencode()函数,下面是php实现的escape函数代码:

    function escape($string, $in_encoding = 'UTF-8',$out_encoding = 'UCS-2') { 
        $return = ''; 
        if (function_exists('mb_get_info')) { 
            for($x = 0; $x < mb_strlen ( $string, $in_encoding ); $x ++) { 
                $str = mb_substr ( $string, $x, 1, $in_encoding ); 
                if (strlen ( $str ) > 1) { // 多字节字符 
                    $return .= '%u' . strtoupper ( bin2hex ( mb_convert_encoding ( $str, $out_encoding, $in_encoding ) ) ); 
                } else { 
                    $return .= '%' . strtoupper ( bin2hex ( $str ) ); 
                } 
            } 
        } 
        return $return; 
    }
    

      

  • 相关阅读:
    mysql基础知识
    项目开发步骤
    python 中的电子邮箱的操作
    django 运行python manage.py sqlall books 时报错 app has migration
    mysql报错锦集
    搭建spark中需要注意的问题
    pycharm5.0 激活方式
    python去除停用词(结巴分词下)
    Ubuntu下安装libsvm
    PCIE_DMA实例五:基于XILINX XDMA的PCIE高速采集卡
  • 原文地址:https://www.cnblogs.com/cnn2017/p/11378339.html
Copyright © 2011-2022 走看看