본문 바로가기

JAVA/JSP

개발 초기에 charset 맞추기.


출처 : http://blog.naver.com/seogi1004?Redirect=Log&logNo=110045319589

정리를 한번 한다 한다 하면서 필요할 때마다 찾아다니다가,
어떤분이 잘 정리를 해주셔서.. 살짝 가져왔습니다. (닉: 문학이?)
출처 표기하고 내용은 변경하지 않았습니다만, 그냥 약간 편집만 했습니다.

1. DB charset 설정

2. Server charset 설정

   예) Tomcat 의 경우 server.xml 파일에 (링크)
        <connector .....   부분에
        useBodyEncodingForURI="true"  
        나
        URIEncoding="UTF-8"
        를 추가한다.

        확인하진 않았지만 위는 문서 인코딩 형태에 따라 URI 형식을 바꾸는 것 같고,
        아래는 URI 인코딩 형식을 무조건 정해주는 것 같다.

    이러면 POST 방식에서의 charset 해결


3.  GET 방식을 위해 jsp 의 경우

    한글 URL이 문제가 될 경우 
     java.net.URLEncoder.encode( "한글파일.html" ,  "UTF-8" );


4. 개발 툴에서 문서 자체의 인코딩 방식 변경.

    editplus : 기본설정 - 파일 >> 기본인코딩 UTF-8
    eclipse : window - preferences - general - workspace - textfile Encoding


5. 작업문서에서의 설정

① 페이지 설정

UTF-8을 쓰고자 하는 경우 *.html, *.htm, *.jsp 파일은 UTF-8 형식으로 저장한다.

EUC-KR, MS949는 ANSI, MS949등의 기본 형식으로 저장하면 된다.

 

모든 HTML, JSP에는 아래와 같은 META태그를 넣을 것을 권장한다.

<META HTTP-EQUIV="contentType" CONTENT="text/html;charset=UTF-8">

<!--EUC-KR인 경우 UTF-8을 EUC-KR로 바꾼다-->

JSP에서는 페이지 상단에 page 지시자를 다음과 같이 넣는다.

<%@ page contentType="text/html;charset=UTF-8" %>

<!--EUC-KR인 경우 UTF-8을 EUC-KR로 바꾼다-->

② POST 방식의 데이터 전송

POST방식으로 전송된 데이터는 UTF-8이든, EUC-KR이든 다음과 같은 라인을 추가하면 해결 된다.

request.setCharacterEncoding("UTF-8");

//EUC-KR인 경우 UTF-8을 EUC-KR로 바꾼다.

③ GET 방식의 데이터 전송

GET 방식으로 전송된 데이터는 URL을 통해 전송되기 때문에 위의 방식으론 쓸 수 없다. URL에서의 데이터를 Latin-1(8859_1)인코딩으로 서버에서 처리하기 때문이다. 이를 톰캣의 버그라고 단정짓는 일부 서적의 말은 잘못된것이다.

 

불러온 데이터를 아래와 같이 처리해 주어야 한다.

request.setCharacterEncoding("UTF-8");

String data = new String(request.getParameter("data").getBytes("8859_1"),"UTF-8");

//Latin-1(8859_1)로 읽어들인 데이터를 다시 UTF-8로 재해석하는 코드

//EUC-KR인 경우  UTF-8을 EUC-KR로 바꾼다.

④ 한글 파일 전송

Latin-1(8859_1)로 세팅된 톰캣 서버에서는 URL을 무조건 영어로 처리하므로 한글 파일은 절대로 읽어들일 수 없다. 파일을 영어로 바꾸어 저장하거나, 한글 파일을 영어로 바꾸는 처리를 해주어야 한다.

⑤ DB URL의 인코딩

jdbc:mysql://localhost:3306/DB명?useUnicode=true&characterEncoding=utf8              [ Java 또는 JSP ]

jdbc:mysql://localhost:3306/DB명?useUnicode=true&amp;characterEncoding=utf8       [ XML ]

 

XML 문서에서는 기호 ('&')를 표시할 때 &amp;를 사용하기 때문에 일반 코드와 다르다.




출처 : http://blog.naver.com/seogi1004?Redirect=Log&logNo=110045319589

출처의 닉:  문학이 님 감사^^

'JAVA/JSP' 카테고리의 다른 글

ResultSet 의 Null 체크.  (0) 2011.03.31
StringBuffer 초기화하여 재사용하기.  (0) 2010.11.22
ResultSet -> LIST  (0) 2010.11.03