'인코딩'에 해당되는 글 1건

  1. 2012.11.05 window7 + IE8 환경에서 GET URL 한글 깨짐 현상.
인터넷 익스플로러의 언어 설정 옵션이다.



위 화면에서 ko_KR 이 IE9, FF 등에서 기본 설정 되어있는 언어 옵션이다.

IE8은 ko 가 기본값으로 되어있다. (위 화면의 옵션은 IE9 화면이며 ko 는 테스트를 위해 추가한 부분이다, 위아래로 이동하여 우선권 설정이 가능하다.)


URLEncoder.encode("한글", encoding_charset) 로 인코딩 후 GET 주소를 보내면 서버에서 request 에 캐릭터 셋을 euc-kr 로 설정한후 request.getParameter 로 받을 경우ko 는 바로 제대로 된 한글이 보여지고 ko_KR 은 깨진 문자열로 보여진다.

따라서 request.getLocale() 을 이용해 ko 인지 ko_KR인지 판단하여 ko_KR일 경우 파라미터 값을 다시 getByte("ISO-8859-1"), "euc-kr" 로 인코딩 변경하여주면 정상적인 한글 값을 받아 올수 있다.


-- 사이트 페이지 링크

<a href="?name=<%=URLEncoder.encode("홍길동", "euc-kr")%>" >

-- 서버에서의 처리

String name = request.getParameter("name");
// [ko] 로 넘어온 경우 출력해 보면 "홍길동" 으로 찍힌다. 인코딩할 필요 없음.

// [ko_KR] 인 경우 깨져서 보인다. 인코딩이 필요하다.
if("get".equalsIgnoreCase(request.getMethod()) && !"".equals(name)){
    String localeName = String.valueOf(request.getLocale()).trim();
    if("ko_KR".equals(localeName)){
        name = new String(name.getBytes("iso-8859-1"), "euc-kr");
        // [ko_KR] 로 넘어온 경우 인코딩 후 여기서 "홍길동" 으로 찍힌다.
    }
}



Posted by KENSIN
,