2011-10-06 74 views
1

當驗證碼輸入錯誤時,我有一段代碼重定向到使用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.redirectQueryString之間的切換情況。重定向是否可以刪除特殊字符的編碼?另外奇怪的是,在其他變量上完成的urlencoding保持不變。

回答

1

確保您已將CodePageCharset設置爲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 
+0

如果不是包含「SAINT-JÉRÔME」,而是將cy變量賦值爲「Hello&oops = World」,會發生什麼? – AnthonyWJones

+0

@AnthonyWJones:由於我的示例腳本不使用'Server.URLEncode',輸出將是「Hello」。 – stealthyninja