2010-01-30 2 views
0

쿼리 문자열 활용을 제어하는 ​​iis 웹 서버에서 웹 페이지를 요청하려고합니다.쿼리 문자열을 사용하여 웹 기반 문자열 파싱에서 문자 손실

예, 내 윈폼 응용 프로그램에서 웹 브라우저 컨트롤을 가지고 있고 내가 실패 이것을 실행하려고하면

을 "www.site.com/getpage.ashx?field=afsfgwesar+sere"비슷한 페이지를 요청 왜냐하면 서버 측에서 getpage.ashx가 올바른 필드를 찾을 수 없기 때문입니다.

머리카락을 많이 잡아 당긴 후 문자열이 실제로 브라우저로 전송 된 것과받은 내용 (즉, 서버가 작업을 시작할 때 누락 된 기호가 누락 되었음)에서 실제로 변경되었음을 알게되었습니다.

"afsfgwesar + sere"로 시작하고 "afsfgwesarsere"로 끝납니다. 라인 어딘가에 문자열이 다시 포맷되고 있습니까?

string field = (string)context.Request.QueryString["field"]; 

그것은이 시점에서 내가 밟은 및 누락 플러스 기호를 본 적이있다 - 나는 서버 측에서 문자열을 얻고있다 방법이있다

.

내가 더하기 기호를 잃어 버리는 이유를 아는 사람과 내가 다시 가져올 수있는 방법은 누구입니까?

답변

0

더하기 기호는 쿼리 문자열의 예약 된 문자입니다. 그것은 종종 공백 문자로 해석됩니다. 검색 엔진을 살펴보면 알 수 있습니다.

afsfgwesar + sere 텍스트를 쿼리 문자열에 추가하기 전에 인코딩하여이를 방지 할 수 있습니다. HttpUtility.UrlEncode를 사용하십시오. HttpUtility.UrlDecode를 사용하여 다시 읽습니다.

더 많은 정보 읽기 : http://msdn.microsoft.com/en-us/library/4fkewx0t.aspx

+0

환상적입니다. 정말로 고마워요. – Grant

2

공백 문자는 허용되지 않으므로 + 기호는 공백 문자로 바뀝니다.

%2B을 삽입하면 URL을 디코딩 한 후 더하기 기호를 "가져올"수 있습니다.

www.site.com/getpage.ashx?field=afsfgwesar%2Bsere 

HttpUtility class에는 문자열 인코딩 및 디코딩 방법이 있습니다. 기본 동작을 보려면 online encoder/decoder도 사용할 수 있습니다.

+0

를 어떻게 tranmission하기 전에 다시 포맷하는 방법을 말해 줄래? 내가 원래 형식으로 자동으로 다시 포맷 할 수있는 방식으로? – Grant

관련 문제