[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

레이블이 Encoding인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Encoding인 게시물을 표시합니다. 모든 게시물 표시

2016년 2월 18일 목요일

[JAVA]TOMCAT 5.5에서 GET방식으로 한글파라미터 사용하기..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

JEUS를 사용하다가 톰캣으로 넘어왔더니 GET방식으로 한글 파라미터를 넘기는 것이 되지 않았다. POST전송이야 알아서 되니까 괜찮고 GET방식으로 파라티터를 넘길 때 URL Encoding과정을 거쳐야 된다. 영문,숫자는 괜찮지만 특수기호나 한글이 들어가게 될 경우 주소창에 표시되는데 문제가 있기 때문에 URL Encoding해서 보내준다.

주소창에 %BF%D5%B1%E2%C3%E1 같은 형태로 쓰여진 것을 본적이 있을텐데 이것이 인코딩을 해준 것이다. 당연히 받을때는 디코딩을 해주고... 그냥 파라미터는 엔코딩한다고 생각하는게 차라리 맘편하다.

String encode(String s,String enc) 의 형태를 띄고 있다. 첫번째 파라미터는 엔코딩할 스트링이고 두번째 파라미터는 캐릭터 엔코딩 타입이다. URLEncoder.encode("블로그","utf-8") 와 같은 형태로 사용한다. URLEncoder는 java.net에 정의되어 있다.

근데 잘 돌아가던 것이 WAS를 변경해서 톰캣 5.5로 넘어왔더니 별 짓을 다해도 한글 GET파라미터가 도저히 먹지를 않았다.

톰캣설치폴더\conf\server.xml 파일에서 90~100라인정도에 보면 다음과 같은 내용이 있다.

Xml

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8090" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" />

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
           port="8443" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS"  >


서버 설정에 따라서 세부 내용은 약간 다를 수는 있다. 이곳에 URIEndode부분을 추가해 준다.



Xml


<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="8090" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
           port="8443" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" disableUploadTimeout="true"
           acceptCount="100" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" URIEncoding="utf-8" >



이렇게 설정해 주고 톰캣을 restart시키면 한글 GET파라미터가 먹는다. 원칙상으로는 디코딩을 해주어야 하지만 <% request.setCharacterEncoding("utf-8"); %>를 상단에 선언했을 경우 자동으로 처리해 주기 때문에 굳이 디코딩까지는 안해주어도 상관없다.

이 부분에 대해서는 권남님의 포스팅에 잘 정리되어 있으니 자세한 내용은 그곳에서 참고...

2016년 2월 4일 목요일

[JSP]JSP파일의 인코딩 설정..

출처 : Outsider's Dev Story https://blog.outsider.ne.kr/

JSP파일에서 인코딩부분에서 문제가 생기지 않도록 하기 위해서는 다음의 3줄을 JSP상위에 항상 넣어주는 것이 좋다.(물론 euc-kr일 때... UTF-8은 아직 잘 몰라서.. ㅡ..ㅡ)

<%@ page contentType="text/html; charset=euc-kr" %>
<% request.setCharacterEncoding("euc-kr"); %>
<% response.setContentType("text/html; charset=euc-kr"); %>

My Comment..
과거에는 진짜 개 짜증 나는 일이었는데.. 지금은 어느정도 감수하는것도 있지만..
그렇게까지 신경이 안쓰인다.. 그래도 나름 글자 깨지고 이런 부분은..
수정할 수가 있기 때문에.. 초보 때 비하면.. 엄청난 발전이지.. ㅋㅋㅋㅋ..

흠 회사라서.. 캡쳐 파일을 올릴 수가 없넹..
집에가서 수정해야겠다..

집에가서 수정하려고 했으나, 형의 블로그 보다보니.. 코드는 저런식으로..
굵게 해서 해둔게 있어서.. 그런 패턴으로 바꿨다.. 아무래도 회사에서..
거의 블로그를 할테니.. 지금 같은 경우가.. 한 두번이 아닐듯..