양식에 입력 된 값이 브라우저에서 올바르게 인코딩되었다고 생각했습니다. JS encodeURIComponent 결과가 FORM에 의해 생성 된 결과와 다릅니다
그러나이 간단한 테스트 파일 "test_get_vs_encodeuri.html는"그것을 보여줍니다 사실이 아니에요 :<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title></title>
</head><body>
<form id="test" action="test_get_vs_encodeuri.html" method="GET" onsubmit="alert(encodeURIComponent(this.one.value));">
<input name="one" type="text" value="Euro-€">
<input type="submit" value="SUBMIT">
</form>
</body></html>
버튼을 제출 타격 :
encodeURICompenent는 유로 - %의 E2의 % 82 % AC '로 입력 값을 인코딩을 유로 - % "
는 GET 쿼리에 브라우저는 단순한를 기록하면서"80 "
누군가 설명 할 수 있습니까?
Javascript를 사용하여 borwser의 FORM (windows-1252)과 동일한 방식으로 모든 것을 어떻게 인코딩합니까 ??? (이스케이프 기능이 작동하지 않아 encodeURIComponent가 작동하지 않음)?
또는 불필요한 변환을 수행하는 encodeURIComponent입니까?
@ 검보 : 지금은 이해합니다. 그러나 이것은 내가 또 다른 질문에서 이미 물었다는 것을,이 망할 encodeURIComponent가 유용한 것을 생각하게한다. 나는 cp1252를 사용하더라도 FORM으로 인코딩 된 값이 잘못 될 수 없다는 것을 의미합니다. 그렇다면 왜이 encodeURIComponent를 사용하여 URI를 인코딩해야합니까? 인코딩 된 코드와 동일한 값을 리턴하는 간단한 JS escape 함수를 사용할 수 없습니다. FORM. 나는 좋지 않을 수도 있지만, 결국 브라우저의 FORM과 똑같은 것을 인코딩하는 것을 선호한다. http://stackoverflow.com/questions/2238515/encodeuricomponent-is-really-useful –
@ Marco Demaio :'escape'는'escape ("€") === "% u20AC"'형식이 다릅니다. 그리고'encodeURIComponent'의 목적은 :'bar & baz'와 같은 값으로'&'를 포함하는 URI를 만들고 싶다고 상상해보십시오. ''...? foo = bar & baz ''는'&'가 특수 문자이기 때문에 두 개의 인수 (* foo *와 * baz *)로 나타납니다. 그러나''...? foo = "+ encodeURIComponent ("bar & baz ")'는 그것을 할 것입니다. – Gumbo
죄송합니다. 제대로 설명하지 못했고 쓰레기를 말했습니다. GET 구성 요소에서 '&'문자를 인코딩해야한다는 것을 알고 있지만 JS를 사용하는 cp1252를 사용하여 FORM과 같은 방식으로 모든 것을 인코딩하는 방법은 무엇입니까? 이스케이프를 사용하는 것은 방법이 아니지만, encodeURICompoenent를 사용하는 것은 €이 다르게 인코딩되기 때문에 사용되지 않습니다. JS에 그렇게 할 수있는 함수가 있습니까? 죄송합니다. 질문을 업데이트했습니다. –