[c#] 더하기 기호 쿼리 문자열

C # 및 asp.net을 사용하여 만든 웹 앱이 있습니다. 더하기 (+) 기호로 쿼리 문자열에 매개 변수 값을 배치했습니다. 그러나 더하기 기호가 사라집니다.

사라지지 않고 쿼리 문자열에 더하기 기호 (+)를 포함하려면 어떻게해야합니까?

조언하십시오.

감사.

편집 : UrlEncode로 코드 추가

string str = Server.UrlEncode(Requery.QueryString["new"]);



답변

+sign은 쿼리 문자열에서 의미 론적 의미를 갖습니다. 공간을 나타내는 데 사용됩니다. 쿼리 문자열에서 의미 론적으로 중요한 또 다른 문자는 쿼리 문자열 &에서 다양한 var=value쌍 을 구분하는 데 사용됩니다 .

대부분의 서버 측 스크립트는 쿼리 매개 변수를 사용하기 전에 디코딩하므로 a +가 공백으로 올바르게 변환됩니다. 이제 +쿼리 문자열에 리터럴 을 표시하려면 %2B대신 지정해야 합니다.

+쿼리 문자열에 로그인은 공백으로 URL 디코딩됩니다. %2B쿼리 문자열에서 + 기호로 URL 디코딩됩니다.

차이점보기

http://www.google.com/search?q=foo+bar

http://www.google.com/search?q=foo%2Bbar

위의 예에서 Google의 서버 스크립트는 검색어 매개 변수를 URL 디코딩 한 다음이를 사용하여 검색을 수행합니다.

URL 인코딩은 %기호 뒤에 특수 문자의 16 진수 코드가 오는 것입니다. 예를 들어 16 진수 코드 A가 0x41 (10 진수 : 65) 임을 알고 있습니다. 이 시도:

http://www.google.com/search?q=%41

이것이 URL 인코딩이 명확 해지기를 바랍니다.

따라서 +자바 스크립트가 +쿼리 매개 변수에 서명이 있는 URL을 가져올 때 서명을 유지 하고 서버 측 스크립트가이를 URL 디코딩 한 후 쿼리 매개 변수를 처리하는 경우 URL에서 쿼리 매개 변수를 URL 인코딩해야합니다. HTTP get 요청을 사용하기 전에 요청이 서버 측 스크립트에 도달 할 때 모든 +기호가 %2B‘s 로 변환되도록 합니다. 이제 서버 측 스크립트가 쿼리 문자열을 URL 디코딩 할 때 모든 의가 원하는 기호 %2B로 다시 변환됩니다 +.

JavaScript에서 URL 인코딩을 참조하십시오 . JavaScript를 사용하여 매개 변수를 URL 인코딩하는 방법을 알아보십시오. 토론에서 짧은 대답 :

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);


답변

특수 문자가 손실되지 않도록 쿼리 문자열 값을 URLEncode해야합니다.


답변

HTML URL 인코딩 참조

+ 기호를 인코딩해야합니다. 값은 % 2B 여야합니다.


답변

아무도 혼동하지 않도록 이전 진술을 변경합니다!

Server.UrlEncode를 사용하여 URL을 만듭니다. 예 :

string myUrl = "http://myurl?param1="  + Server.UrlEncode("my+param+1");


답변

다른 간단한 방법은 Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1)내 URL이http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==


답변

매개 변수를 보내기 전에 매개 변수에 더하기 기호가 있는지 확인해야합니다. 예를 들어 하나의 플래그로 대체해야하는 경우 매개 변수는 다음과 같습니다. klasjdlkasd + djid3223 다음을 대체 할 수 있습니다. klasjdlkasdFLAGdjid3223

그리고 당신이 개종 할 때, 당신은 다시 교체해야합니다

klasjdlkasd + djid3223


답변

이것을 시도해보십시오.

Request.QueryString["new"].Trim();