谁能帮我写个函数,谢谢关于rawurlencode和unescape最好是xuzuning(唠叨)来帮我解答一下。

julychina 2005-08-10 07:54:25
我的意思是想在PHP中将生成的HTMl文件编码,在显示时要显示HTML的内容,但是在源代码状态下不要看到我的原来的HTML内容,现在我在PHP中使用rawurlencode,在同一页用unescape还原,其它的都可以,就是中文是乱码,请哪位高手帮我解决,也可以不用此方法,只要能达到我的目的就行。
<?php
$str1="中华人民共和国";
$str1=rawurlencode($str1);
?>
<script language="javascript">
str=unescape('<?=$str1?>');
document.write(str);
</script>
中华人民共和国要求是一个变化的字符,因为此页不可能通过另一个页转换
...全文
283 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
尚和空四 2005-09-26
  • 打赏
  • 举报
回复
escape(strURLRoot + "/" + FileName)
julychina 2005-08-11
  • 打赏
  • 举报
回复
xuzuning(唠叨) 大哥,我真的是服了你了,你才是我心目中的偶像呀。
patchclass 2005-08-11
  • 打赏
  • 举报
回复
urlencode
和unescape 编码是不一样的,而且单单是 unescape编码在不同浏览器上也不一样的
还是自己写个urldecode吧
xuzuning 2005-08-11
  • 打赏
  • 举报
回复
rawurlencode是按字节进行处理的,并不管当前的文字编码是什么
而js的unescape是按unicode编码进行的
所以你并不能得到正确的资料,除非rawurlencode的参数串为unicode编码的

因此你需要用php编程模拟js的动作

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);
}

function 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);
}
peanutsun 2005-08-10
  • 打赏
  • 举报
回复
帮你顶一下,行么?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧