澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2019-08-24 09:48 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

正确解码javascript中通过escape编码后的字符

那是以前到现在搜聚的多少个,不知底什么人写的了,但透过测量检验未有失水准~
JavaScript代码

应用js对UHavalL中的汉字实行escape编码。 <a href="" onclick="window.open('product_list.php?p_sort=' escape('脚本之家'));">那样点击链接后的效时:
引用:
转移了那般的效劳, 很显眼用PHP的urldecode()或许base64_decode()是无可奈何反解的。
赶尽杀绝办法, 用PHP写三个反解函数:

smarty可以直接对url实行编码, 举例<!--{$var|urlencode}-->
但在smarttemplate里面就象是从没,由于链接是由js提交的,而不是表单提交,所以不可能自动编码。
消除办法: 选拔js对ULacrosseL中的汉字举行escape编码。
<a href="" onclick="window.open('product_list.php?p_sort=' escape('PHP开垦财富网'));">
如此点击链接后的效时:
引用:
转移了这般的机能, 很明朗用PHP的urldecode()只怕base64_decode()是无力回天反解的。
消除方法, 用PHP写多个反解函数:

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

function phpUnescape($escstr)
{
preg_match_all("/%u[0-9A-Za-z]{4}|%.{2}|[0-9a-zA-Z. -_] /", $escstr, $matches);
$ar = &$matches[0];
$c = "";
foreach($ar as $val)
{
if (substr($val, 0, 1) != "%")
{
$c .= $val;
} elseif (substr($val, 1, 1) != "u")
{
$x = hexdec(substr($val, 1, 2));
$c .= chr($x);
}
else
{
$val = intval(substr($val, 2), 16);
if ($val < 0x7F) // 0000-007F
{
$c .= chr($val);
} elseif ($val < 0x800) // 0080-0800
{
$c .= chr(0xC0 | ($val / 64));
$c .= chr(0x80 | ($val % 64));
}
else // 0800-FFFF
{
$c .= chr(0xE0 | (($val / 64) / 64));
$c .= chr(0x80 | (($val / 64) % 64));
$c .= chr(0x80 | ($val % 64));
}
}
}
return $c;
}

function js_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;}

function js_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;
}

escape编码后:

瞩目JS编码会自动转变到为UTF-8, 所以必得举行编码转变能力收获不错的结果,不然会中文乱码。但一旦运用UTF-8编码就绝不这一步了。
代码如下:print iconv('utf-8', 'gb2312', js_unescape($_REQUEST['p_sort']));
到此我们就马到功成地反解了js的escape编码了。
如下:
别的小编找到个用PHP达成js的escape编码的函数:

瞩目JS编码会自动调换到为UTF-8, 所以必须进行编码转换技巧收获不错的结果,不然会普通话乱码。
代码如下:
print iconv('utf-8', 'gb2312', js_unescape($_REQUEST['p_sort']));
到此我们就成功地反解了js的escape编码了。
如下:
援引:PHP开荒能源网
别的小编找到个用PHP达成js的escape编码的函数:

复制代码 代码如下:

复制代码 代码如下:

复制代码 代码如下:

%u6D4B%u8BD5www.jb51.net""''<>&&

function phpescape($str)
{        
$sublen=strlen($str);
      $retrunString="";        
for ($i=0;$i<$sublen;$i )        
{                 
if(ord($str[$i])>=127)                 
{                          
$tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));                          
//$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下只怕要开采此项                          
$retrunString.="%u".$tmpString;                          
$i ;                 
} else
{                          
$retrunString.="%".dechex(ord($str[$i]));                 
}        
}        
return $retrunString;
}

function phpescape($str)
{
$sublen=strlen($str);
$retrunString="";
for ($i=0;$i<$sublen;$i )
{
if(ord($str[$i])>=127)
{
$tmpString=bin2hex(iconv("gb2312","ucs-2",substr($str,$i,2)));
//$tmpString=substr($tmpString,2,2).substr($tmpString,0,2);window下恐怕要张开此项
$retrunString.="%u".$tmpString;
$i ;
} else {
$retrunString.="%".dechex(ord($str[$i]));
}
}
return $retrunString;
}

本文由澳门威利斯人发布于办公软件,转载请注明出处:正确解码javascript中通过escape编码后的字符

关键词: 澳门威利斯人