php与javascrip编码解码问题,求解..... 还是有点不明白,我现在要实现在php中使用跟js中escape功能相同的函数编码,然后再js中使用unescape解码,但php这个函数就是达不到效果,我怎么办,请给个办法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用了我的函数还要说三道四的...难道自己去处理一下大小写都嫌麻烦吗?function escape($str) { preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(ord($v[0]) < 128) $ar[$k] = rawurlencode($v); else $ar[$k] = "%u".strtoupper(bin2hex(iconv("GB2312","UCS-2",$v))); } return join("",$ar);} <?phpfunction escape($str) { preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(ord($v[0]) < 128) $ar[$k] = rawurlencode($v); else $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v)); } return join("",$ar);} ?><br /><?php$a="中国";echo $a;echo "<br>";$b=escape($a);echo $b;echo "<br>"; ?> <script type="text/javascript" language="javascript"> document.write(escape('<?=$a?>')); </script>代码运行结果中国%u6d93%u%u%u4E2D%u56FD 很明显效果跟js的escape不一样 如果用楼上的那个函数的话escape('中国')根本什么都不显示结果:中国%u4E2D%u56FD查看源文件得到的是<br />中国<br><br> <script type="text/javascript" language="javascript"> document.write(escape('中国')); </script>两个<br>中间的escape('中国')函数,什么都没显示 如果是UTF8编码 Js的encodeURIComponent直接在PHP端就能用 js编码推荐用encodeURIComponent,不推荐用escape了PHP编码一般用urlencode或rawurlencode至于能否通用,没试过 encodeURI() 不编码的字符: ~!@#$&*()=:/,;?+'encodeURIComponent()不编码的字符: ~!*()'escape()不编码的字符:@*/+跟php对应的函数都有差别, appserv win7手动不能关闭apcche 两个相同结构的表,如何进行排序 请教一个正则匹配中英文混合的问题utf-8 从LDAP获取邮箱列表 请大家帮一个忙,我公司一个php系统被zend加密了,请问怎么解密码啊,100分 新手问题,急。。字符串判断 插入mysql数据库的时候 字符位置互换 为什么只接受<?php code ?>,而不接受<? code ?> eclipse open project 灰色 不能点击 有做过IFRAME弹窗的朋友吗 进来指点一下 jpgraph问题
难道自己去处理一下大小写都嫌麻烦吗?function escape($str) {
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".strtoupper(bin2hex(iconv("GB2312","UCS-2",$v)));
}
return join("",$ar);
}
function escape($str) {
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}
?><br />
<?php
$a="中国";
echo $a;
echo "<br>";
$b=escape($a);
echo $b;
echo "<br>";
?>
<script type="text/javascript" language="javascript">
document.write(escape('<?=$a?>'));
</script>代码运行结果
中国
%u6d93%u%u
%u4E2D%u56FD
很明显效果跟js的escape不一样
结果:
中国%u4E2D%u56FD
查看源文件得到的是
<br />
中国<br><br> <script type="text/javascript" language="javascript">
document.write(escape('中国'));
</script>
两个<br>中间的escape('中国')函数,什么都没显示
PHP编码一般用urlencode或rawurlencode至于能否通用,没试过
encodeURIComponent()不编码的字符: ~!*()'
escape()不编码的字符:@*/+
跟php对应的函数都有差别,