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对应的函数都有差别, 嗯...像中奖一样的中bug? 为什么GZIP压缩页面没有效果?? 一个数组问题 100分跪求PHP查询更新删除MYSQL中的XML的例子 mysql命令行下中文乱码 已按坛上指导设置过 在线急等 php购物车问题 想找一个PHP做的论坛原代码 什么数据库版本的都行 最好能稳定点的 学习用~ 那位大虾给我介绍个?(给我下载连接也行 告诉我名字也行)谢谢 请问如何知道网卡的mac地址? 模拟提交表单,cookie参数缺失的情况? 有做过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对应的函数都有差别,