본문 바로가기

Programming/JQuery

jQuery Ajax 한글자료 넘김 처리 - jsp, java

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'
    );
});


> 받는 페이지


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;
            }


          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;

}

 

사용해보지는 않았지만 웹서핑 중 쓸만한 정보인 것 같아서 퍼옴

참조 : http://bardoj.egloos.com/10681181

'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