1 articles
get방식에 관련된 글
2006/08/22
[AJAX] Get방식 패러미터 중 특수문자처리
2006/08/22 16:26
이번주 업무 중 ajax로 만들어진 페이지에서 특수문자를 패러미터로 넘겨야 하는 일이 있었다.
표시되지 않던 특수문자(&,+,%)는 encodeURIComponent()을 이용하여 해결했건만... 받는쪽 request인코딩을 UTF-8로 설정해야 한글이 제대로 표시되는 문제에 봉착했다. 헉 orz
결국 같은팀 과장님의 도움을 얻어 "인코딩이 필요한 문자들만 뽑아서 변형하는 방법"을 이용하기로 했다.
해당코드의 모체는 "고안해내는 재능을 가지신 지인"에게서 얻었음을 밝히며, escape()와 encodeURI()를 제치고 encodeURIComponent()가 선발되었다.
참고로 encodeURIComponent()는 !*()' 을 encode 못한다.
왜 하필 encodeURIComponent()를 썼냐고 물어보신다면...
직접 코드짜서 넘겨보시라..jsp에서 request로 받는순간 isHex Exception을 만나게 될 것이다..ㅡㅜ(헉~ 무시무시)
관련 JS 코드
function uriEncode(data) {
if(data != "") {
var encdata = '';
var datas = data.split('&');
for(i=0;i<datas.length;i++) {
if(i==0)
encdata = datas[i];
else
encdata += encodeURIComponent("&")+datas[i];
}
datas = encdata.split('%');
for(i=0;i<datas.length;i++) {
if(i==0)
encdata = datas[i];
else
encdata += encodeURIComponent("%")+datas[i];
}
datas = encdata.split('+');
for(i=0;i<datas.length;i++) {
if(i==0)
encdata = datas[i];
else
encdata += encodeURIComponent("+")+datas[i];
}
} else {
encdata = "";
}
return encdata;
}
추가) 여러 특수문자 중 "%", "&", "+"를 정상적으로 표시 하지 못했다. 고로 위와같이 encodeURIComponent()를 통해 변경하는 작업을 했다.
Trackback Address
http://babyp.net/trackback/39