본문 바로가기
웹관련/Ajax

[Ajax] Euc-Kr환경 Ajax 이용시 한글깨짐

by 착한덕환 2016. 9. 23.



요즘에는 대부분의 개발환경이 UTF-8로 되어 있어서 나와 같은 문제를 겪는 분들이 많지 않겠지만.

유지보수나 부득이하게 MS949환경에서 개발을 하다보면 jQuery $.ajax를 사용하는 과정에서 데이타를 한글로 전송하면 한글이 깨지는 문제가 있다.

$.ajax({
         url: 'blahblah.com',
         type: 'post',
         data: $('#form).serialize(),
         dataType: 'html',  
         contentType: "application/x-www-form-urlencoded; charset=MS949",
         error: function(data) {
                  alert('문제가 발생하였습니다.\n다시 시도해 주시기 바랍니다.');
          },
         success: function(data) {
                  //do something
         }
 });

위 코드는 $.ajax를 호출하는 javascript인데 6번째 줄 contentType을 추가함으로써 한글이 깨지지 않게 전송할 수 있다.

중요한 건 그렇다고 한글 값을 그대로 넘기면 안 된다.

넘기려는 한글 값을 encodeURIComponent(한글값)으로 설정하여 보내야 한다.

이렇게 보내진 값은 java code 에서 

String decodedVal = URLDecoder.decode(hangulVal, “UTF-8”); 

 

이렇게 변환하여 이용하면 된다.

UTF-8보다 상당히 번거롭지만 이렇게라도 사용할 수 있다는 것


댓글