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해야합니다.
답변
+ 기호를 인코딩해야합니다. 값은 % 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();