programing

URL에서 더하기 (+) 기호를 인코딩하는 방법

projobs 2021. 1. 19. 20:38
반응형

URL에서 더하기 (+) 기호를 인코딩하는 방법


아래 URL 링크는 새 Google 메일 창을 엽니 다. 내가 가진 문제는 Google이 이메일 본문의 모든 더하기 (+) 기호를 공백으로 대체한다는 것입니다. + 기호에서만 발생하는 것 같습니다. 이 문제를 해결하는 방법에 대한 제안이 있습니까? (나는 ASP.NET 웹 페이지를 작업 중입니다)

https://mail.google.com/mail?view=cm&tf=0&to=someemail@somedomain.com&su=some subject & body = 안녕하세요 + 안녕하세요

(본문 이메일에 "안녕하세요 + 안녕하세요"가 "안녕 거기 안녕하세요"로 표시됩니다)


+문자는 URL에서 특별한 의미를 가지고 =>는 공백을 의미합니다. +기호 를 사용하려면 URL로 인코딩해야합니다.

body=Hi+there%2bHello+there

다음은 .NET에서 URL을 올바르게 생성하는 방법의 예입니다.

var uriBuilder = new UriBuilder("https://mail.google.com/mail");

var values = HttpUtility.ParseQueryString(string.Empty);
values["view"] = "cm";
values["tf"] = "0";
values["to"] = "someemail@somedomain.com";
values["su"] = "some subject";
values["body"] = "Hi there+Hello there";

uriBuilder.Query = values.ToString();

Console.WriteLine(uriBuilder.ToString());

결과

https://mail.google.com:443/mail?view=cm&tf=0&to=someemail%40somedomain.com&su=some+subject&body=Hi+there%2bHello+there


본문에 더하기 (+) 기호를 넣으려면 2B로 인코딩해야합니다.

예 : 이것을 시도하십시오


자바 스크립트 언어의 경우 encodeURIComponent 함수를 사용하여 특수 문자를 인코딩하십시오.


RFC-3986에서 "unreserved"로 정의 된 문자를 제외한 모든 문자를 항상 퍼센트 인코딩하는 것이 더 안전합니다.

예약되지 않음 = ALPHA / DIGIT / "-"/ "." / "_"/ "~"

따라서 더하기 문자 및 기타 특수 문자를 퍼센트 인코딩하십시오.

더하기 문제는 RFC-1866 (HTML 2.0 사양), 단락 8.2.1에 따라 발생하기 때문입니다. subparagraph 1., "양식 필드 이름과 값은 이스케이프됩니다. 공백 문자는 '+'로 대체 된 다음 예약 된 문자는 이스케이프됩니다."). 이 양식 데이터 인코딩 방법은 이후 HTML 사양에서도 제공됩니다. application / x-www-form-urlencoded에 대한 관련 단락을 찾으십시오.

참조 URL : https://stackoverflow.com/questions/5450190/how-to-encode-the-plus-symbol-in-url

반응형