2012-03-15 3 views
2

는이 코드가 "WWW을 나는 브라우저 주소에서 볼 수있는 URL을한다 실행 에는 urlencoding 및 Response.Redirect를하고 +

Response.Redirect("/?confim&name=John%20Smith"); 

asp.net

에서 다음 작업을 수행하려합니다. mysite.com/?confirm & name = John + Smith "를 선택하십시오.

하지만 원하는 것은 "www.mysite.com/?confirm & name = John % 20Smith"입니다.

% 20 및 +가 공백 대신 사용된다는 것을 알고 있으며 "John_Smith"와 같은 이름을 갖는 것이 더 나을 것임을 알고 있습니다. 하지만 이전 데이터로 제 3 자 소프트웨어 등을 통합하려고하고 기존의 이유로 변경되지 않습니다.

나는 이것을 다른 바닐라 사이트에서 시도했지만 문제가 발생하지 않았으므로 도움이되지 않지만 그 글로벌 설정이나 제가 누락되었거나 들어 본 적이없는 것인지 궁금합니다. 어떤 도움을 크게 할 수

+0

페이지 소스에서 '% 20'또는 '+'가 무엇입니까? – Oded

+0

페이지 소스? 죄송합니다. 브라우저 주소를 잃어 버렸습니다. 리디렉션이 서버에 도달하면 원시 URL은 무엇입니까? – wdhough

답변

0

나는 당신이 ---

의 +는 예약 문자를 좋아하지 않는 인코딩에 대한 이해 생각하지 않는 것

감사

감사합니다. 따라서 공백을 +로 바꾸더라도 +는 % 코드로 바뀝니다. 그리고 "%"는 % 20으로 대체되어야합니다. 그렇지 않으면 HttpServerUtility.UrlEncode 메서드를 사용할 수 있습니다. 그리고 이미 작동하지 않을 경우, 다음이 해킹 시도 :

string someUrlEncodedMyWay = "www.mysite.com/?confirm&name=John%20Smith"; 
Response.Write("<script type=\"text/javascript\">"); 

Response.Write("window.location = \"" + someUrlEncodedMyWay + "\""); 

Response.Write("</script>"); 

을 그리고 당신은 펑키 URL을 사용하는 브라우저를 말할 수 있지만, 브라우저가 원하지 않는 경우, 당신은 끝낼 수 있습니다 공백과 특수 문자의 다른 인코딩을 사용합니다.

+0

개인적인 문제는 없지만 URL을 보는 제 3 자 제품은 + – wdhough

+0

대신 % 20을 사용해야합니다. 또 다른 가능한 해결책은 response.addheader ("Location", server.url encode ("string"))입니다. 나는이 질문에서 얻었다 : http://stackoverflow.com/questions/4765453/asp-response-redirect-does-not-urlencode-sign – MatthewMartin

관련 문제