URL 인코딩은 "&"(앰퍼샌드)를 "&"HTML 엔터티로 인식
URL에 전달되는 문자열을 인코딩하고 있습니다 (GET을 통해). 내가 사용한다면 escape
, encodeURI
또는 encodeURIComponent
, &
로 대체됩니다 %26amp%3B
,하지만 난 그것으로 대체 할 %26
. 내가 도대체 뭘 잘못하고있는 겁니까?
코드를 보지 않으면 어둠 속에서 찌르는 것 외에는 대답하기가 어렵습니다. 올바른 메소드 인 encodeURIComponent ()에 전달하는 문자열이 innerHTML 속성 에 액세스 한 결과에서 온 것 같습니다 . 해결책은 대신 innerText / textContent 속성 값 을 얻는 것입니다.
var str,
el = document.getElementById("myUrl");
if ("textContent" in el)
str = encodeURIComponent(el.textContent);
else
str = encodeURIComponent(el.innerText);
그렇지 않은 경우 replace () 메서드를 사용하여 HTML 엔터티를 교체 할 수 있습니다 .
encodeURIComponent(str.replace(/&/g, "&"));
말 그대로 이것을했다면 :
encodeURIComponent('&')
결과가 다음 %26
, 당신은 여기를 테스트 할 수 있습니다 . 있는지 확인합니다 인코딩 된 문자열입니다 만 &
하지 &
, 그렇지 않으면 가능성이 어떤 경우인지, 제대로 인코딩되어 ...로 시작합니다. 어떤 이유로 다른 결과가 필요한 경우 .replace(/&/g,'&')
인코딩 전에 수행 할 수 있습니다 .
HTML 및 URI 인코딩이 있습니다. &
되고 &
HTML로 인코딩 하면서 %26
이다 &
에서 URI 인코딩 .
따라서 문자열을 URI 인코딩하기 전에 HTML 디코딩 한 다음 URI 인코딩해야 할 수 있습니다. :)
var div = document.createElement('div');
div.innerHTML = '&AndOtherHTMLEncodedStuff';
var htmlDecoded = div.firstChild.nodeValue;
var urlEncoded = encodeURIComponent(htmlDecoded);
결과 %26AndOtherHTMLEncodedStuff
희망이 시간을 절약
참고 URL : https://stackoverflow.com/questions/3541711/url-encode-sees-ampersand-as-amp-html-entity
'IT' 카테고리의 다른 글
속성 x가없는 요소와 일치하는 CSS 선택기 (0) | 2020.03.18 |
---|---|
에뮬레이터에서 Android 애플리케이션이 실행 중인지 어떻게 알 수 있습니까? (0) | 2020.03.18 |
Express-js가 정적 파일을 가져올 수없는 이유는 무엇입니까? (0) | 2020.03.18 |
생성자에서 직접 메소드를 정의하는 것과 프로토 타입을 사용하는 이점은 무엇입니까? (0) | 2020.03.18 |
android studio에서 gradle을 업데이트하는 방법은 무엇입니까? (0) | 2020.03.18 |