server.urlencode不编码特殊字符
问题描述:
当验证码输入错误时,我有一段代码重定向到使用server.urlEncode (fields)
的页面。代码如下所示:server.urlencode不编码特殊字符
sRedirectTo = "page.asp" _
& "?action=vcerr" _
& "&at=" & server.urlEncode(sAdType) _
& "&fn=" & server.urlEncode(sFirstname) _
& "&mn=" & server.urlEncode(sMiddleName) _
& "&ln=" & server.urlEncode(sLastName) _
& "&sx=" & server.urlEncode(sSex) _
& "&pr=" & server.urlEncode(sProvince) _
& "&cn=" & server.urlEncode(sCountry) _
& "&cy=" & server.urlEncode(sCity) _
& "&md=" & server.urlEncode(dMomentDate) _
& "&ag=" & server.urlEncode(iAgree) _
& "&chn=" & server.urlEncode(sCharityName) _
& "&chu=" & server.urlEncode(sCharityUrl) _
& "&city=" & server.urlEncode(sCityID) _
& "&key=" & server.urlEncode(sKeywords)
然而,当cy
项是像圣徒杰罗姆一个城市,它没有编码的口音。网址在浏览器栏是这样的:? page.asp行动= VCERR [...] & CY = SAINT-杰罗姆& OD = 10%使用2F05%2 [...]
然后将文本拉QueryString("cy)
并显示在页面上,导致字符不能正确显示。
有什么我在这里失踪?我不确定为什么server.urlEncode
不起作用。
编辑:
我查了可变sRedirectTo
在调试时,似乎urlEncode
确实对人物的工作,所以Response.redirect
和QueryString
之间的切换情况。重定向是否可以删除特殊字符的编码?另外奇怪的是,在其他变量上完成的urlencoding保持不变。
答
确保您已将CodePage
和Charset
设置为UTF-8
,并将这两个文件都保存在UTF-8
中。
测试脚本我用:
r.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.Charset = "UTF-8"
cy = "SAINT-JÉRÔME"
Response.Redirect("p.asp?cy=" & cy)
%>
p.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.Charset = "UTF-8"
cy = Request.QueryString("cy")
Response.Write cy
%>
输出:
SAINT-JÉRÔME
如果不是包含“SAINT-JÉRÔME”,而是将cy变量赋值为“Hello&oops = World”,会发生什么? – AnthonyWJones
@AnthonyWJones:由于我的示例脚本不使用'Server.URLEncode',输出将是“Hello”。 – stealthyninja