我有一段代码在未正确输入验证码时使用server.urlEncode (fields)
重定向到页面。代码如下:
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
条目适用于像Saint-Jérome这样的城市,则无法对重音进行编码。浏览器栏中的网址如下所示:
?page.asp行动= VCERR [...]&安培; CY = SAINT-杰罗姆&安培; OD = 10%2F05%2 [...]
然后使用QueryString("cy)
拉出文本并显示在页面上,导致字符无法正确显示。
这里有什么我想念的吗?我不确定为什么server.urlEncode
不起作用。
编辑:
我在调试时检查了变量sRedirectTo
,似乎urlEncode
对字符起作用,因此切换发生在Response.redirect
和QueryString
之间。重定向是否可能删除了特殊字符的编码?另外奇怪的是,对其他变量进行的urlencoding保持不变。
答案 0 :(得分:1)
确保您已将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