asp 站点用IIS7 URLREWRITE 2.0 网址伪静态传递中文参数时乱码,怎么解决?能解决追加赏分

asp 站点用IIS7 URLREWRITE 2.0 网址伪静态传递中文参数时乱码,怎么解决?能解决追加赏分,第1张

先将中文参数  使用server.URLEncode()进行编码;

在接收页头部加下面代码,记得一定得是最上面

<%Session.CodePage = 65001

request.QueryString("key")   ‘key参数可有可无,可以是空的

 

Session.CodePage = 936       %>

1.顺序换一下,并把\w+换成.*?如下

RewriteRule ^search/(.*?)/page=(\d+)$ search.php?c=$1&page=$2

RewriteRule ^search/(\w+)$ search.php?c=$1

2.abc/def只匹配abc

([^\/]*)/

括号里面就是abc

3.除了字符外,还允许%号出现abc%def全部能匹配出来

([\w\%]*)

括号里就是你想要的

配置Apache的伪静态,涉及到中文正则不能匹配,

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

也试了,也不能匹配。

尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)

也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。

后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)

就可以匹配了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/63533.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-28
下一篇2023-02-28

发表评论

登录后才能评论

评论列表(0条)

    保存