2009-07-14 5 views
4

각 쿼리 문자열 매개 변수를 urlencode하지 않고 전체 URL 쿼리 문자열을 URL로 인코딩하는 방법이 있습니까? 지금은이 같은 뭔가 쿼리 문자열을 다시 보내고 있습니다 :urlencode 모든 쿼리 문자열 매개 변수

Page.Request.Url.Query 

참조 :

 
    Uri baseUri = new Uri(" http://www.contoso.com/catalog/shownew.htm?date=today&<a>=<b&gt ;"); 
    string queryString = baseUri.Query; 

The queryString 매개 변수 ?date=today&%3Ca%3E=%3Cb%3E를 반환합니다

foreach (string x in Page.Request.QueryString.Keys) 
{ 
sQueryString += x + "=" + Server.UrlEncode(Request.Params.Get(x)) + "&"; 
} 

답변

6

당신이 할 일은해야 모두 다음과 같은 값을 얻을 수 있습니다.

하나 더 편집 일 - MSDN에서 :

쿼리 속성은 URI에 포함 된 쿼리 정보가 포함되어 있습니다. 쿼리 정보는 경로 에 물음표 (?)로 구분되어 있으며 은 URI 끝까지 계속 이어집니다. 반환 된 쿼리 정보는 이며 물음표는 입니다.

쿼리 정보는 기본적으로 RFC 2396에 따라 으로 이스케이프됩니다. 국제 자원 식별자 (아이리스) 또는 국제 도메인 이름 (IDN) 구문 분석이 활성화 된 경우 쿼리 정보 및 String.format를 사용하는 것보다 3986 및 RFC 3987.

+0

이것은 현재 QueryString 전체를 제공하지만 앰퍼샌드 (&)가 URL 안전 버전으로 대체되므로 URLEncode를 실행하면 값을 잃게됩니다. –

+0

UrlEncode를 실행할 필요가 없습니다. – Alex

+0

.Query가 없지만 이것이 완벽하게 작동하는 것 같습니다. Page.Request.Url.AbsoluteUri –

0

기타 RFC에 에 따라 이스케이프 QueryString의 끝 부분에 여분의 &이 있으면 위의 방법이 최적입니다.

관련 문제