본문 바로가기
IBM - old/WAS 문제&해결

WebSphere 에서 XMLHTTPRequest 를 사용할 때 한글 이슈

by freeman98 2016. 5. 9.

1. WAS 버전 : WebSphere ND All

2. OS : All

3. Error 발생 시점 : client.encoding.override 옵션을 사용해서 KSC5601 로 인코딩하여 문제없이 한글이 나오나
                          AJax 의 XMLHTTPRequest 을 사용하는 경우에 폼 데이터의 한글이 깨져서 나옴
4. Error message :
                     없음....page 의 한글이 일부 깨져서 출력

5. 예상 이유 :
 WebSphere 서버 설정에서 client.encoding.override을 KSC5601로 설정할 경우 클라이언트로부터 넘어오는 모든 폼 데이터는
 강제로 KSC5601로 인코딩 된다. 문제는 XMLHTTPRequest을 사용하여 POST 방식으로 폼 데이터를 전송하게 되면 폼 데이터가
 디폴트로 UTF-8로 인코딩된다는 것이다. 따라서 이 폼 데이터를 전송하게 되면 UTF-8형식으로 인코딩된 한글은
 웹스피어 서버 설정에 의해서 KSC5601로 강제 변환되어 결국 한글이 모두 깨지게 된다.

6. 조치 방안 :
   이 문제의 가장 간단한 해결 방법은 client.encoding.override를 사용하지 않고 각 페이지마다 인코딩 방식을 지정하는 것이다.    
   또다른 방법은 client.encoding.override을 UTF-8로 사용하는 것이다. 이게 가장 이상적인 방법이 되겠다.
   모든 한글 데이터를 UTF-8로 처리하자는 이야기다.

   마지막 해결 방법은 default.client.encoding 을 사용하는 것이다.
   WebSphere V4 이전에는 캐릭터 인코딩 시에 가장 우선시 되는 옵션이었으나 V4 이후부터는 client.encoding.override을
   우선 적용하고 client.encoding.override이 지정되지 않았을 경우 각 페이지에서 지정된 인코딩 방식을 적용하게 된다.
   이마저도 지정되어 있지 않을 경우 default.client.encoding 이 사용되게 된다. 따라서 default.client.encoding 을
   사용하면 UTF-8로 명시적으로 인코딩 된 데이터의 경우 UTF-8 형식으로 먼저 처리할 수 있게 된다.

참조 : http://blog.naver.com/onthebed?Redirect=Log&logNo=130001462303

댓글