programing

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

elseif 2023. 4. 24. 22:33

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

아래 URL 링크를 클릭하면 새 Google 메일 창이 열립니다.문제는 구글이 이메일 본문의 플러스 기호(+)를 모두 공백으로 대체한다는 것입니다.그런 일은 오직 이 지역에서만 일어나는 것 같다.+사인. 어떻게 하면 고칠 수 있을까요?(ASP를 만들고 있습니다.NET Web 페이지).

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

(본문 메일에서 '안녕하세요+''Hello there'가 'Hi there Hello there'로 표시됩니다.)

+문자는 [URL =>의 [쿼리 세그먼트]에 특별한 의미가 있습니다.이것은 공백 공간을 의미합니다. . 리터럴을 사용하는 경우+여기에 서명하고 URL을 인코딩해야 합니다.%2b:

body=Hi+there%2bHello+there

에서 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.

예를 들어 다음과 같습니다.이거 드셔보세요

를 부호화하려면+JavaScript를 사용한 값,encodeURIComponent기능.

예:

var url = "+11";
var encoded_url = encodeURIComponent(url);
console.log(encoded_url)

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

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

따라서 플러스 문자 및 기타 특수 문자를 백분율로 인코딩합니다.

RFC-1866(HTML 2.0 사양) 제8.2.1항 제1항에 따르면 "폼 필드 이름과 값은 이스케이프됩니다.스페이스 문자는 "+"로 대체되고 예약된 문자는 이스케이프됩니다."폼 데이터를 인코딩하는 방법은 이후의 HTML 사양에서도 제공되고 있습니다.어플리케이션/x-www-form-urlencoded에 관한 관련 문단을 찾습니다.

목록에 추가하기만 하면 됩니다.

Uri.EscapeUriString("Hi there+Hello there") // Hi%20there+Hello%20there
Uri.EscapeDataString("Hi there+Hello there") // Hi%20there%2BHello%20there

https://stackoverflow.com/a/34189188/98491 를 참조해 주세요.

보통 사용하고 싶은 것은EscapeDataString그게 제대로 된 거야

일반적으로 를 사용하는 경우.NET API -new Uri("someproto:with+plus").LocalPath또는AbsolutePath는, URL 에 플러스 문자를 보관 유지합니다.(동일)"someproto:with+plus"문자열)

그렇지만Uri.EscapeDataString("with+plus")탈옥과 인격, 그리고 생산될 것이다."with%2Bplus".

일관되게 말하자면, 나는 항상 탈옥과 캐릭터로 사는 것을 추천한다."%2B"어디에나 사용할 수 있습니다.그러면 누가 당신의 플러스 캐릭터에 대해 어떻게 생각하는지 추측할 필요가 없습니다.

탈옥자가 '+'을 하면 가 생성됩니다.' '일부 컴포넌트의 문제인 것 같습니다.

언급URL : https://stackoverflow.com/questions/5450190/how-to-encode-the-plus-symbol-in-a-url