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)
내 트윗에는 예약 문자가 많으 ?'():/
므로 status
URL 매개 변수 의 전체 값을 인코딩했습니다 . 또한 줄 바꿈, 앰퍼샌드 등을 그대로 유지 mailto:
하려면 body
및 subject
매개 변수를 인코딩해야하므로 메시지 본문 또는 제목이있는 링크를 사용할 때 유용 합니다.
예약 된 집합 ( "예약 된 문자")의 문자가 특정 상황에서 특별한 의미 ( "예약 된 목적")를 가지고 있고 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¶m2="+encodeURIComponent('Dolce & Gabbana') OR
var someValue = 'Dolce & Gabbana';
data : "param1=getAccNos¶m2="+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
'IT story' 카테고리의 다른 글
“경로를 업데이트하고 동시에 지점으로 전환 할 수 없습니다” (0) | 2020.05.20 |
---|---|
쉐도우 이름은 외부 범위에서 얼마나 나쁜가? (0) | 2020.05.20 |
ng-hide / ng-show에서 복잡한 표현이 가능합니까? (0) | 2020.05.20 |
디렉토리의 모든 파일에서 grep 작업을 수행하는 방법 (0) | 2020.05.20 |
C에서 int를 문자열로 변환하는 방법은 무엇입니까? (0) | 2020.05.20 |