本帖最后由 bcrun 于 2011-09-13 11:32:10 编辑

解决方案 »

  1.   


    '┏〓〓〓〓〓〓〓〓〓 UtoStr,start 〓〓〓〓〓〓〓〓〓┓
    '[简介]:
    'Unicode字符转换为普通字符
    Function UtoStr(Ustr As String) As String
       '帮你写函数,帮你写代码,帮你写模块,帮你设计软件
       '--需要什么函数或功能,可以联系我。
       '版权所有,请保留作者信息.
       '如需商业用途请联系作者QQ:1085992075
       Dim SArr() As String
       SArr = Split(Ustr, "\u")
       Dim I As Long
       Dim DST As String
       DST = SArr(I)
       For I = 1 To UBound(SArr)
       If Len(SArr(I)) = 4 Then
       DST = DST & ChrW(val("&H" & SArr(I)))
       ElseIf Len(SArr(I)) > 4 Then
       DST = DST & ChrW(val("&H" & Left(SArr(I), 4))) & Mid(SArr(I), 5)
       Else
       DST = DST & SArr(I)
       End If
       Next
       UToStr = DST
       'Dim gb2312() As Byte
       'gb2312 = StrConv(DST, vbFromUnicode)
    End Function
    '┗〓〓〓〓〓〓〓〓〓  UtoStr,end  〓〓〓〓〓〓〓〓〓┛
      

  2.   

    PHP对escape的字符串进行解密
    作者:小文 发布于:2010-8-28 12:53 Saturday 分类
    Escape是js 脚本的一种加密字符串的方式.具体详情可以参见http://www.w3school.com.cn/js/jsref_unescape.asp 有的网站会将中文字进行Escape编码,然后在显示时用unescape再进行转换.比如有这么一段代码<title>广州公交查询-由%u91D1%u6CFD%u5927%u53A6到%u767E%u5F81%u79D1%u6280%u5927%u53A6的乘车路线</title>这个是经过Escape编码的.我们需要在PHP中将其解密.在网上搜索后,得到加密和解密代码.<?phpfunction unescape($str) { //这个是解密用的
             $str = rawurldecode($str); 
             preg_match_all("/%u.{4}|&#x.{4};|&#d+;|.+/U",$str,$r); 
             $ar = $r[0]; 
             foreach($ar as $k=>$v) { 
                      if(substr($v,0,2) == "%u") 
                               $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,-4))); 
                      elseif(substr($v,0,3) == "&#x") 
                               $ar[$k] = iconv("UCS-2","GBK",pack("H4",substr($v,3,-1))); 
                      elseif(substr($v,0,2) == "&#") { 
                               $ar[$k] = iconv("UCS-2","GBK",pack("n",substr($v,2,-1))); 
                      } 
             } 
             return join("",$ar); 
    }function phpescape($str){//这个是加密用的
        preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$newstr);
        $ar = $newstr[0];
        foreach($ar as $k=>$v){
            if(ord($ar[$k])>=127){
                $tmpString=bin2hex(iconv("GBK","ucs-2",$v));
                if (!eregi("WIN",PHP_OS)){
                    $tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
                }
                $reString.="%u".$tmpString;
            } else {
                $reString.= rawurlencode($v);
            }
        }
        return $reString;
    }?>我们测试一下echo unescape("由%u91D1%u6CFD%u5927%u53A6到%u767E%u5F81%u79D1%u6280%u5927%u53A6的乘车路线");可以得到  由金泽大厦到百征科技大厦的乘车路线