IT story

URL에서 앰퍼샌드 이스케이프

hot-time 2020. 5. 20. 07:56
반응형

URL에서 앰퍼샌드 이스케이프


앰퍼샌드가 포함 된 문자열이 포함 된 GET 메시지를 보내려고하는데 URL에서 앰퍼샌드를 이스케이프 처리하는 방법을 알 수 없습니다.

예:

http://www.example.com?candy_name=M&M
result => candy_name = M

나는 또한 시도했다 :

http://www.example.com?candy_name=M\&M
result => candy_name = M\\

URL을 수동으로 사용하고 있으므로 올바른 문자 만 있으면됩니다.

라이브러리를 사용할 수 없습니다. 어떻게 할 수 있습니까?


백분율 인코딩이 필요합니다.

> encodeURIComponent('&')
"%26"

따라서 귀하의 경우 URL은 다음과 같습니다.

http://www.mysite.com?candy_name=M%26M

이것은 앰퍼샌드 URL뿐만 아니라 예약 된 모든 문자 에도 적용 됩니다 . 그 중 일부는 다음과 같습니다.

 # $ & + ,  / : ; = ? @ [ ]

아이디어는 &HTML 문서에서 인코딩과 동일 하지만 컨텍스트는 HTML 문서 내에있는 것 외에도 URI 내에 있도록 변경되었습니다. 따라서 퍼센트 인코딩은 두 컨텍스트 내에서 구문 분석하는 문제를 방지합니다.

이것이 매우 유용한 곳은 다른 URL 안에 URL을 넣어야 할 때입니다. 예를 들어 Twitter에 상태를 게시하려는 경우 :

http://www.twitter.com/intent/tweet?status=What%27s%20up%2C%20StackOverflow%3F(http%3A%2F%2Fwww.stackoverflow.com)

내 트윗에는 예약 문자가 많으 ?'():/므로 statusURL 매개 변수 의 전체 값을 인코딩했습니다 . 또한 줄 바꿈, 앰퍼샌드 등을 그대로 유지 mailto:하려면 bodysubject매개 변수를 인코딩해야하므로 메시지 본문 또는 제목이있는 링크를 사용할 때 유용 합니다.

예약 된 집합 ( "예약 된 문자")의 문자가 특정 상황에서 특별한 의미 ( "예약 된 목적")를 가지고 있고 URI 체계가 해당 문자를 다른 목적으로 사용해야한다고 말하는 경우 퍼센트로 인코딩되어야합니다. 예약 문자의 퍼센트 인코딩은 문자를 ASCII의 해당 바이트 값으로 변환 한 다음 해당 값을 16 진수 쌍으로 표시합니다. 이스케이프 문자로 사용되는 퍼센트 부호 ( "%")가 앞에 오는 숫자는 예약 문자 대신 URI에서 사용됩니다. 비 ASCII 문자의 경우 일반적으로 UTF-8의 바이트 시퀀스로 변환 된 다음 각 바이트 값이 위와 같이 표시됩니다. 예를 들어 "path"구성 요소에 사용되는 경우 예약 문자 "/" URI의 경로 세그먼트 사이의 구분 기호라는 특별한 의미가 있습니다. 지정된 URI 체계에 따라 "/"가 경로 세그먼트에 있어야하는 경우 원시 "/"대신 세 문자 "% 2F"또는 "% 2f"를 세그먼트에 사용해야합니다.

http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters


를 사용해보십시오 http://www.example.org?candy_name=M%26M.

이 참조Wikipedia에 대한 추가 정보 참조 하십시오 .


% 문자를 사용하여 URL에서 허용되지 않는 문자를 '이스케이프'할 수 있습니다. [RFC 1738]을 참조하십시오.

http://www.asciitable.com/ 의 ASCII 값 표 .

당신이 볼 수는 &16 진수로 26 - 당신은 M의 %의 26M이 필요하므로.


이 encodeURIComponent 함수를 사용하여 인수를 전달할 수 있으므로 특수 문자 전달에 대해 걱정할 필요가 없습니다.

data: "param1=getAccNos&param2="+encodeURIComponent('Dolce & Gabbana') OR
var someValue = 'Dolce & Gabbana';
data : "param1=getAccNos&param2="+encodeURIComponent(someValue)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent


라이브러리를 사용하여 값을 인코딩 할 수없는 경우 http://www.urlencoder.org/ 또는 http://www.urlencode-urldecode.com/ 또는 ...

전체 URL이 아닌 "M & M"값을 입력하십시오. ;-)


누군가 PHP로 원한다면 도움이 될 수 있습니다.

$variable ="candy_name=M&M";
$variable = str_replace("&", "%26", $variable);

참고 URL : https://stackoverflow.com/questions/16622504/escaping-ampersand-in-url

반응형