server.urlencode не кодирует специальные символы - PullRequest
2 голосов
/ 06 октября 2011

У меня есть фрагмент кода, который перенаправляет на страницу, используя 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 предназначена для города, подобного Сен-Жерому, она не может кодировать акцент.URL в панели браузера выглядит следующим образом: page.asp? Action = vcerr [...] & cy = SAINT-JÉRÔME & od = 10% 2F05% 2 [...]

Затем текст извлекается с помощью QueryString("cy) и отображается на странице, что приводит к неправильному отображению символов.

Есть что-то, что я здесь упускаю?Я не уверен, почему server.urlEncode не работает.

РЕДАКТИРОВАТЬ:

Я проверил переменную sRedirectTo во время отладки, кажется, что urlEncode работает на символыпоэтому переключение происходит между Response.redirect и QueryString.Возможно ли, что редирект убрал кодировку для специальных символов?Также странно то, что urlencoding, выполненный для других переменных, остается неизменным.

1 Ответ

1 голос
/ 06 октября 2011

Убедитесь, что вы установили 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...