2014-10-13 3 views
3

escape 함수가 사용되지 않으며 대신 encodeURI 또는 ​​encodeURIComponent를 사용해야한다는 것을 알고 있습니다. 그러나 encodeUri 및 encodeUriComponent는 이스케이프와 동일한 작업을 수행하지 않습니다.자바 스크립트 이스케이프를 대체 하시겠습니까?

나는 스웨덴어 åäö와 자바 스크립트에서 mailto 링크를 만들고 싶습니다.

console.log("mailto:?subject="+escape(subject)+"&body=" + escape(body)); 
console.log("mailto:?subject="+encodeURIComponent(subject)+"&body=" + encodeURIComponent(body)); 
console.log("mailto:?subject="+encodeURI(subject)+"&body=" + encodeURI(body)); 

Output: 
mailto:?subject=My%20subject%20with%20%E5%E4%F6&body=My%20body%20with%20more%20characters%20and%20swedish%20%E5%E4%F6 
mailto:?subject=My%20subject%20with%20%C3%A5%C3%A4%C3%B6&body=My%20body%20with%20more%20characters%20and%20swedish%20%C3%A5%C3%A4%C3%B6 
mailto:?subject=My%20subject%20with%20%C3%A5%C3%A4%C3%B6&body=My%20body%20with%20more%20characters%20and%20swedish%20%C3%A5%C3%A4%C3%B6 

"탈출"로 만든 만 이메일 링크 IE 나 크롬을 사용하여 Outlook에서 올바른 형식의 메일 열립니다 : 여기서 탈출에 encodeURIComponent과에 encodeURI 사이의 비교입니다.

My subject with åäö 

을하고 몸도 엉망 찾고 :에 encodeURI 나에 encodeURIComponent를 사용하는 경우 피사체가 말했다.

탈출 외에 다른 기능이있어 작업 mailto 링크를 얻을 수 있습니까?

+0

인코딩을 사용하는, 당신은'UTF-8'을 사용하여 시도가? – Cyclonecode

+0

UTF-8 인코딩을 사용하고 있습니다. – gusper

+1

나는 Firefox에서 이스케이프가 작동하지 않는다는 것을 알았으므로 Firefox 케이스에서 encodeURIComponent를 사용해야 할 것입니다. Firefox의 오류 : _ERROR_ILLEGAL_VALUE : 구성 요소가 오류 코드를 반환했습니다 : 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMLocation.href] – gusper

답변

0

JavaScript 버전 1.5에서는 escape() 함수가 더 이상 사용되지 않습니다. 대신 encodeURI() 또는 encodeURIComponent()을 사용하십시오.

예를

string:   "May/June 2016, Volume 72, Issue 3" 
escape:   "May/June%202016%2C%20Volume%2072%2C%20Issue%203" 
encodeURI:   "May/June%202016,%20Volume%2072,%20Issue%203" 
encodeURIComponent:"May%2FJune%202016%2C%20Volume%2072%2C%20Issue%203" 

소스는 https://www.w3schools.com/jsref/jsref_escape.asp

관련 문제