String acc_name = StringUtil.encodeURL((String) param.get("acc_name"), "UTF-8");
1. 모든 문서는 UTF-8 인코딩으로 저장되어야 합니다.
에디트 플러스의 경우 도구 -> 기본설정 -> 파일 부분에서 새 파일 형식을
UTF-8 로 해놓음으로써 새파일 작성시 UTF-8을 기본으로 작성할수 있고,
이미 다른 인코딩 타입에서 작성된 문서인 경우 내용을 모조리 Ctrl+C로 복사후
문서 -> 인코딩 변경 로드에서 UTF-8로 변경후 다시 붙여넣기 하면 됩니다.
이클립스의 경우 Package Explorer 에서 프로젝트에서 우측 버튼을 누른 후
Properties->Info->Text file encoding->Other 을 UTF-8 로 잡아주면 됩니다.
( 기존 다른 인코딩 타입에서 작성된 문서 내부 한글은 모조리 깨지게 됨 )
* ascii 로 작성된 자바스크립트 파일을 utf 문서에서 불러와 수행시킬 경우
자바스크립트 에러 나는 문제도 있더군요.(한글 주석이 영향을 줬을수도...)
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 은 초기에 2개가 있는데 8080 포트 부분을 수정하면 됩니다.
수정하는 방법은
URIEncoding="UTF-8" 을 추가하면 됩니다.
예)
위와 같이 했다고 해결되는 것은 아닙니다. get 방식으로 데이터를 전송하면
자바 파일에서 확인 했을 경우 물음표 값만 넘어옵니다.
get 방식으로 보낼 경우 자바스크립트로 변환을 해줍니다.
예를 들어 "한글"을 자바스크립트에서
처럼 encodeURIComponent 함수로 변환하게 되면 %ED%95%9C%EA%B8%80 으로
변환됩니다. 이 값을 주소에 "한글" 대신에 넣게 되면 자바에서 알아서 잘~ 받습니다 ^^
5. HttpURLConnection 을 통하여 UTF-8 로 된 URL 을 읽을 경우.
다른 부분은 동일하고,
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
로 변경합니다.
6. jsp -> bean 데이터 전송은 문제 없지만 jsp -> jsp 에서 한글이 깨진다면
받는 부분에서
String test = request.getParameter("test ");
test = new String(test .getBytes("8859_1"), "UTF-8");
처럼 변환해서 저장합니다.
server.xml파일의 URIEncoding속성을 "utf-8"과 "euc-kr" 두가지로 jsp파일로만 테스트한 결과
모든 페이지의 상단에
<%@ page contentType = "text/html;charset=utf-8" %>
//서블릿은 다음과 같은 방식으로 UTF-8을 설정합니다.
//request.setCharacterEncoding("utf-8")
로 설정되어지면 되고
encodeURIComponent()를 사용하지 않아도 된다.
단. get방식으로 들어왔을경우는 new String(test .getBytes("8859_1"), "UTF-8"); 를 사용하여 변환하여 하며
get인지 post로 왔는지 체크는 request.getMethod()함수를 사용하여 알 수 있다.
server.xml파일에서 URIEncoding속성을 변경하여 줄 필요성은 없는듯하다
//test.jsp
<%@ page contentType = "text/html;charset=utf-8" %>
<% request.setCharacterEncoding("utf-8");%>
<%=request.getMethod()%>
<%
String test = request.getParameter("test");
if(request.getMethod().equals("GET"))
test = new String(test .getBytes("8859_1"), "UTF-8");
String method = request.getParameter("method");
%>
<%=test%>
컴퓨터를 사용 하면서 많은 경험을 하는데 늘 win와 함께하는 오류가 있습니다. 그것은 바로 다름 아닌 컴퓨터 사용자들에게 안정감을 주려고 블루 색상을 사용 해서 만든건지는 모르겠지만 마음에 평화보다는 불안감이 나타나는 화면 입니다. 컴퓨터를 재부팅을 하거나 아니면 안돌아오면 마지막 방법으로 포맷을 하게되는데 이 오류가 이렇게 많다는 거에 대해서 놀라움입니다. 일상에서 이렇게 많은 오류를 보기는 힘들지만 무슨 작업을 하든 만나게 되는 win와 뗄래야 뗄 수 없는 사이 실과 바늘 관계랄까. 블루스크린 입니다. 많기는 많네요 이거 만드는데도 엄청 걸렸겠는데요 찾기 단축키[Ctrl+F] 로 사용해서 찾아보세요 순서 블루스크린코드 내용 (클릭시 해결방법을 볼 수 있습니다.) 1 0x00000001 APC_INDEX_MISMATCH 2 0x00000002 DEVICE_QUEUE_NOT_BUSY 3 0x00000003 INVALID_AFFINITY_SET 4 0x00000004 INVALID_DATA_ACCESS_TRAP 5 0x00000005 INVALID_PROCESS_ATTACH_ATTEMPT 6 0x00000006 INVALID_PROCESS_DETACH_ATTEMPT 7 0x00000007 INVALID_SOFTWARE_INTERRUPT 8 0x00000008 IRQL_NOT_DISPATCH_LEVEL 9 0x00000009 IRQL_NOT_GREATER_OR_EQUAL 10 0x0000000A IRQL_NOT_LESS_OR_EQUAL 11 0x0000000B NO_EXCEPTION_HANDLING_SUPPORT 12 0x0000000C MAXIMUM_WAIT_OBJECTS_EXCEEDED 13 0x0000000D MUTEX_LEVEL_NUMBER_VIOLATION 14 0x0000000E NO_USER_MODE_CONTEXT 15 0x0000000F SPIN_LOCK_ALREADY_OWNED 16 0x00000010 SPIN_LOC...
댓글
댓글 쓰기