encodeURIComponent() 함수가 escase 시키지 않는 문자는 다음과 같음.


영문 알파벳

정수

-_.!~*'()



이 중 짜증 나는 경우가 하나 있을 수 있는 것이 홑따옴표임.

예를 들어 js 레벨에서 <form>과 <input type="hidden">을 만들어서 submit을 하려고 하는데,

<input type="hidden">을 만들 때 다음처럼 할 경우이다.


var frm = $('#frm');
var val = encodeURIComponent("요롱'이");

// attribute 할당시 쌍따옴표가 아니라 홑따옴표를 사용할 경우
// encodeURIComponent는 홑따옴표를 escape하지 않으므로 닫기로 인식되어 그 뒤의 문자열이 잘림.
// 이건 encodeURIComponent를 사용하지 않는다 해도 동일함.
frm.append("<input type='hidden' value='"+val+"'");


여튼 이런저런 거지같은 상황을 막기 위해 encodeURIComponent() 함수가 홑따옴표를 비롯한 나머지 특수문자들도 escape하길 바란다면,

아래와 같은 식의 함수를 사용할 것.

function encodeAll(s)
{
    return encodeURIComponent(s).replace(/[!'()*]/g, escape); // escape시킬 문자를 추가지정
}











Posted by bloodguy

댓글을 달아 주세요