jQuery는 euc-kr 환경에서는 한글을 넘기고 받을 때 깨진다. 그렇기 때문에 코드처리를 별도로 해줘야 한다.
jQuery 중에 $.ajax, $.get, $.post, $.load 등을 사용할때, 한글이 포함되어 있는 정보는 아래와 같은 처리를 해야 한다.
보내는 페이지, notex 문자열에 전송하려는 한글 정보가 있다고 가정한다.
$('#notex').bind('keyup', function(e) {
pref = "thisProgram"
var key1 = $('#dummy').val();
var key2 = "";
var notex = $('#notex').val();
$.post(
'/outbound/wsndseq026.jsp'
,{ pref:pref, key1:key1, key2:key2, notex:escape(notex) }
,function(xml) {
var rx = $(xml).find("result").text();
}
,'xml'
);
});
pref = "thisProgram"
var key1 = $('#dummy').val();
var key2 = "";
var notex = $('#notex').val();
$.post(
'/outbound/wsndseq026.jsp'
,{ pref:pref, key1:key1, key2:key2, notex:escape(notex) }
,function(xml) {
var rx = $(xml).find("result").text();
}
,'xml'
);
});
> 받는 페이지
String notex = (request.getParameter("notex")==null ? "":UserDefineUtil.unescape(request.getParameter("notex")); 로 받아 처리한다.
> 사용자 정의 unescape 메소드 소스
/-*
* java unescape
*-
public static String unescape(String inp) {
String rtnStr = new String();
char [] arrInp = inp.toCharArray();
int i;
for(i=0;i<arrInp.length;i++) {
if(arrInp[i] == '%') {
String hex;
if(arrInp[i+1] == 'u') { //유니코드.
hex = inp.substring(i+2, i+6);
i += 5;
} else { //ascii
hex = inp.substring(i+1, i+3);
i += 2;
}
* java unescape
*-
public static String unescape(String inp) {
String rtnStr = new String();
char [] arrInp = inp.toCharArray();
int i;
for(i=0;i<arrInp.length;i++) {
if(arrInp[i] == '%') {
String hex;
if(arrInp[i+1] == 'u') { //유니코드.
hex = inp.substring(i+2, i+6);
i += 5;
} else { //ascii
hex = inp.substring(i+1, i+3);
i += 2;
}
try{
rtnStr += new String(Character.toChars(Integer.parseInt(hex, 16)));
} catch(NumberFormatException e) {
rtnStr += "%";
i -= (hex.length()>2 ? 5 : 2);
}
} else {
rtnStr += arrInp[i];
}
}
return rtnStr;
}
사용해보지는 않았지만 웹서핑 중 쓸만한 정보인 것 같아서 퍼옴
'Programming > JQuery' 카테고리의 다른 글
jQuery Ajax memory leak (0) | 2012.04.05 |
---|---|
jQuery Ajax 에러 처리 (0) | 2012.04.05 |
jQuery Ajax 사용 (0) | 2012.04.05 |
셀렉터 (0) | 2012.03.29 |
JQuery란? (0) | 2012.03.29 |