객체들은 순차적으로 표현되고 마지막에는 파일내의 각 객체들을 OFFSET을 나열하는 상호참조 테이블로 구성하며 마지막 부분은 root 객체를 가리키고 있고 또한 상호 참조 테이블의 시작까지의 OFFSET을 포함 합니다.
혹시 블로그 스킨이 깨져 보이시나요? 최신버전의 Internet Explorer(Windows용), Opera, Firefox를 사용해보세요.
Found 3 article(s) for 'tomcat'.
- 2015/08/24 [java servlet에서 pdf 다루기,오라클자바커뮤니티 자바서블릿강좌]
- 2013/05/27 jsp UTF-8관련 개발
- 2013/05/27 Tomcat 폴더 구조
객체들은 순차적으로 표현되고 마지막에는 파일내의 각 객체들을 OFFSET을 나열하는 상호참조 테이블로 구성하며 마지막 부분은 root 객체를 가리키고 있고 또한 상호 참조 테이블의 시작까지의 OFFSET을 포함 합니다.
OKJSP( http://www.okjsp.pe.kr/seq/72792 )
1. 모든 문서는 UTF-8 인코딩으로 저장되어야 합니다.
에디트 플러스의 경우 도구 -> 기본설정 -> 파일 부분에서 새 파일 형식을
UTF-8 로 해놓음으로써 새파일 작성시 UTF-8을 기본으로 작성할수 있고,
이미 다른 인코딩 타입에서 작성된 문서인 경우 내용을 모조리 Ctrl+C로 복사후
문서 -> 인코딩 변경 로드에서 UTF-8로 변경후 다시 붙여넣기 하면 됩니다.
이클립스의 경우 Package Explorer 에서 프로젝트에서 우측 버튼을 누른 후
Properties->Info->Text file encoding->Other 을 UTF-8 로 잡아주면 됩니다.
( 기존 다른 인코딩 타입에서 작성된 문서 내부 한글은 모조리 깨지게 됨 )
2. jsp 파일 상단에는 다음과 같은 방식으로 UTF-8 설정합니다.
<%@ page contentType = "text/html;charset=utf-8" %>
3. 서블릿은 다음과 같은 방식으로 UTF-8을 설정합니다.
request.setCharacterEncoding("utf-8")
4. 자바스크립트에서 encodeURIComponent 처리 및 톰캣 server.xml 의 설정 변경
위 1,2,3번의 방식으로 하면 post 방식의 데이터는 잘 받지만
get 방식의 데이터는 한글이 깨집니다.
이와 같은 경우 자바스크립트의 encodeURIComponent 함수와
server.xml 을 이용하여 처리하면 됩니다.
4.1 server.xml
톰캣 폴더의 conf 폴더에는 server.xml 파일이 존재합니다.
에디터로 열어보면
예)
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
값이 약간 틀릴수 있지만 초기 셋팅 값이 보통 저러하고,
Connector 은 초기에 2개가 있는데 8080 포트 부분을 수정하면 됩니다.
수정하는 방법은
URIEncoding="UTF-8" 을 추가하면 됩니다.
예)
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" />
위와 같이 했다고 해결되는 것은 아닙니다. get 방식으로 데이터를 전송하면
자바 파일에서 확인 했을 경우 물음표 값만 넘어옵니다.
get 방식으로 보낼 경우 자바스크립트로 변환을 해줍니다.
예를 들어 "한글"을 자바스크립트에서
<SCRIPT>alert( encodeURIComponent("한글") )</SCRIPT>
처럼 encodeURIComponent 함수로 변환하게 되면 %ED%95%9C%EA%B8%80 으로
변환됩니다. 이 값을 주소에 "한글" 대신에 넣게 되면 자바에서 알아서 잘~ 받습니다 ^^
[출처] [본문스크랩] [스크랩][인코딩] UTF-8관련 개발|작성자 일리
utf-8 인코딩을 이용한 한글 url 처리 [ 조회수: 393 ] | ||||||||||||||||||||||||||
개요
구조
관련자료utf-8 체크
utf-8 인코딩 체크 예제
package util; import java.io.UnsupportedEncodingException; /** * <pre> * 작성자 : 이종희 (qola@naver.com) * JAlbum.com (http://jalbum.net/download.jsp?ref=list) 소스 참고함. * <b>특정 문자열이 utf-8 인코딩인지 아닌지 체크한다.</b> * * utf-8 인코딩 패턴인 110xxxxx 10xxxxxx , 1110xxxx 10xxxxxx 10xxxxxx 인지 비교한다. * 2바이트 (110xxxxx 10xxxxxx) 패턴의 유니 코드 중복으로 인해 100% 검증할수 없지만 * 한글의 경우 3byte 로 표기 되므로 2바이트 패턴일 경우 utf-8 인코딩이 아닌것으로 간주한다. * * 따라서 000080 ~0007FF 영역의 라틴 문자, 그리스 문자, 키릴 문자, 콥트 문자, * 아르메니아 문자, 히브리 문자, 아랍 문자 등은 utf-8 인코딩을 비교할수 없다. * * 수정된 utf-8의 의한 null값 \u0000 은 11000000 10000000 로 표기되지만 무시하기로 한다. * * </pre> */ public class UTFUtil { public static boolean isUTF8(String str) throws Exception{ byte[] bytes=str.getBytes("ISO-8859-1"); return isUTF8(bytes,0,bytes.length); } public static boolean isUTF8(byte[] buf, int offset, int length) { boolean yesItIs = false; for (int i=offset; i<offset+length; i++) { if ((buf[i] & 0xC0) == 0xC0) { // 11xxxxxx 패턴 인지 체크 int nBytes; for (nBytes=2; nBytes<8; nBytes++) { int mask = 1 << (7-nBytes); if ((buf[i] & mask) == 0) break; } //CJK영역이나 아스키 영역의 경우 110xxxxx 10xxxxxx 패턴으로 올수 없다. if(nBytes==2) return false; // Check that the following bytes begin with 0b10xxxxxx for (int j=1; j<nBytes; j++) { if (i+j >= length || (buf[i+j] & 0xC0) != 0x80) return false; } if(nBytes==3){ // 유니코드 형태로 역치환 해서 0x0800 ~ 0xFFFF 사이의 영역인지 체크한다. char c = (char) (((buf[i] & 0x0f) << 12) + ((buf[i+1] & 0x3F) << 6) + (buf[i+2] & 0x3F)); if(!(c >= 0x0800 && c <= 0xFFFF)){ return false; } } yesItIs = true; } } return yesItIs; } }
한글 URL 사용시 문제 발생 케이스
해결책
구현 예제
|