자바 난 코드 해결

1.가장 기본 적 인 난 장 판 문제.이 난 장 판 문 제 는 가장 간단 한 난 장 판 문제 다.보통 새로 생 긴 다.페이지 인 코딩 이 일치 하지 않 아 발생 하 는 난 코드 입 니 다.
<%@ page language="java" pageEncoding="UTF-8"%> 
<%@ page contentType="text/html;charset=iso8859-1"%> 
<html> 
<head> 
<title>    </title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
</head> 
<body> 
      
</body> 
</html> 

 
세 곳 의 코드.첫 번 째 인 코딩 형식 은 jsp 파일 의 저장 형식 입 니 다.Ecljpse 는 이 인 코딩 형식 에 따라 파일 을 저장 합 니 다.한 자 를 포함 하여 jsp 파일 을 컴 파일 합 니 다.두 번 째 인 코딩 은 디 코딩 형식 입 니 다.UTF-8 로 저 장 된 파일 이 iso 8859-1 로 디 코딩 되 어 있 기 때문에 중국어 가 있 으 면 오류 가 발생 할 수 있 습 니 다.일치 해 야 한 다 는 것 이다.두 번 째 곳 에 있 는 이 줄 은 없 을 수 있다.결 성도 iso 8859-1 의 인 코딩 형식 을 사용 합 니 다.그래서 이 줄 이 없 었 다 면'나 는 좋 은 사람 이다'는 난동 도 벌 어 졌 을 것 이다.일치 해 야 합 니 다.세 번 째 인 코딩 은 브 라 우 저 를 제어 하 는 디 코딩 방식 입 니 다.앞의 디 코딩 이 일치 하고 틀 리 지 않 는 다 면 이 인 코딩 형식 은 괜 찮 습 니 다.어떤 웹 페이지 에 난 장 판이 생 긴 것 은 브 라 우 저가 어떤 인 코딩 형식 을 사용 하 는 지 확정 할 수 없 기 때문이다.페이지 가 때때로 페이지 에 삽입 되 어 브 라 우 저가 인 코딩 형식 을 헷 갈 리 게 하기 때문이다.난리 가 났 습 니 다.
2.양식 을 Post 방식 으로 제출 한 후에 받 은 코드 문제 도 흔히 볼 수 있 는 문제 입 니 다.이 난동 도 tomcat 의 내부 인 코딩 형식 인 iso 8859-1 이 난동 을 부리 고 있 습 니 다.즉,post 가 제출 할 때 제출 한 인 코딩 형식 이 설정 되 어 있 지 않 으 면 iso 8859-1 방식 으로 제출 하고 받 아들 인 jsp 는 utf-8 방식 으로 받 아들 입 니 다.난 리 를 일으키다.이런 원인 이 있 는 이상 다음 과 같은 몇 가지 해결 방법 을 비교 해 보 자.A.인 자 를 받 을 때 인 코딩 변환 String str=new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8");이렇게 되면 모든 매개 변 수 는 반드시 이렇게 코드 를 바 꿔 야 한다.귀 찮 습 니 다.한 자 는 확실히 구 할 수 있 습 니 다.B.요청 페이지 의 시작 부분 에서 요청 한 인 코딩 코드,request.set CharacterEncoding("UTF-8")을 실행 하고 제출 한 내용 의 문자 집합 을 UTF-8 로 설정 합 니 다.이렇게 되면 이 매개 변 수 를 받 아들 이 는 페이지 는 코드 를 바 꿀 필요 가 없습니다.String str=request.getParameter("something")를 직접 사용 합 니 다.한자 파 라미 터 를 얻 을 수 있다.페이지 마다 이 말 을 실행 해 야 합 니 다.이 방법 은 post 제출 에 효과 가 있 습 니 다.get 제출 과 파일 업로드 시 enctype="multipart/form-data"는 유효 하지 않 습 니 다.잠시 후 이 두 개의 어 지 러 운 상황 에 대해 단독으로 설명 하 겠 습 니 다.C.페이지 마다 request.set CharacterEncoding("UTF-8")을 쓰 지 않도록 모든 jsp 를 인 코딩 처리 하 는 것 을 권장 합 니 다.이 인터넷 에는 많은 예 가 있다.여러분 스스로 찾 아 보 세 요.
 
3.폼 get 제출 방식 의 코드 처리 방식.get 방식 으로 중국 어 를 제출 하면 파 라 메 터 를 받 는 페이지 에 도 오류 가 발생 할 수 있 습 니 다.이 오류 의 원인 도 tomcat 의 내부 인 코딩 형식 iso 8859-1 때 문 입 니 다.Tomcat 은 get 의 결 성 인 코딩 방식 인 iso 8859-1 로 한 자 를 인 코딩 하고 인 코딩 후 url 에 추가 하여 페이지 에서 얻 은 인 자 를 난 코드/,로 받 아들 입 니 다.해결 방법:A.상례 의 첫 번 째 방식 을 사용 하여 받 아들 인 문 자 를 디 코딩 하고 다시 디 코딩 합 니 다.B.Get 은 url 로 제출 되 었 고 url 에 들 어가 기 전에 iso 8859-1 의 인 코딩 처 리 를 했 습 니 다.이 인 코딩 에 영향 을 주 려 면 server.xml 의 Connector 노드 에 useBody Encoding ForURI="true"속성 설정 을 추가 하면 tomcat 가 get 방식 에 대한 한자 인 코딩 방식 을 제어 할 수 있 습 니 다.위 에 있 는 이 속성 제어 get 제출 도 request.setCharacterEncoding("UTF-8")이 설정 한 인 코딩 형식 으로 인 코딩 합 니 다.그래서 자동 으로 utf-8 로 인 코딩 되 어 페이지 를 정상적으로 받 아들 이면 됩 니 다.하지만 진정한 인 코딩 과정 은...tomcat 는 또에 설 치 된 URIEncoding="UTF-8"을 한 번 더 인 코딩 하고,그러나 utf-8 로 인 코딩 되 었 기 때문에 더 이상 인 코딩 해도 변 하지 않 을 것 입 니 다.url 에서 인 코딩 을 가 져 오 면 수락 페이지 는 URIEncoding="UTF-8"에 따라 디 코딩 됩 니 다.
 
4.파일 을 업로드 할 때 어 지 러 운 코드 로 파일 을 업로드 할 때 form 폼 은 모두 enctype="multipart/form-data"를 설정 합 니 다.이런 방식 으로 파일 을 스 트림 으로 제출 합 니 다.apache 의 업로드 구성 요 소 를 사용 하면 어 지 러 운 상상 이 많 습 니 다.이것 은 apache 의 초기 comons-fileupload.jar 에 bug 가 있 기 때문에 한 자 를 꺼 낸 후에 디 코딩 을 합 니 다.이런 방식 으로 제출 하면 인 코딩 은 tomcat 결 성 인 코딩 형식 iso-8859-1 을 자동 으로 사용 합 니 다.그러나 발생 하 는 난 코드 문 제 는 마침표,쉼표 등 특수 기호 가 난 코드 로 바 뀌 었 고 한자 의 수량 이 홀수 라면 난 코드 가 발생 하고 짝수 는 정상적으로 해석 된다 는 것 이다.해결 방법:comons-fileupload-1.1.1.jar 버 전의 jar 를 다운로드 하여 이 bug 를 해결 하 였 습 니 다.그러나 내용 을 꺼 낼 때 도 꺼 낸 문 자 를 iso 8859-1 에서 utf-8 로 바 꿔 야 합 니 다.이미 정상 적 인 모든 한자 와 문 자 를 얻 을 수 있다.
5.자바 코드 는 url 요청 에 대해 매개 변 수 를 받 아들 이 는 어 지 러 운 url 의 인 코딩 형식 은 위 에서 말 한 URIEncoding="UTF-8"에 달 려 있 습 니 다.이 인 코딩 형식 을 설정 하면 url 까지 의 한자 인 자 를 모두 인 코딩 해 야 합 니 다.그렇지 않 으 면 한자 매개 변수 값 은 모두 어 지 러 운 코드 입 니 다.예 를 들 어 Response.sendderect("/a.jsp?name=장대 위")를 연결 합 니 다.a.jsp 에 서 는 String name=request.getParameter("name")를 직접 사용 합 니 다.얻 은 게 난 장 판이 야.utf-8 이 어야 한 다 는 규정 이 있 기 때문에 이 방향 은 Response.sendderect("/a.jsp?name=URLEncode.encode","utf-8")라 고 써 야 합 니 다.그래 야 지.이 인자 URIEncoding="UTF-8"을 설정 하지 않 으 면 어떻게 됩 니까?설정 하지 않 으 면 결 성 된 인 코딩 형식 iso 8859-1 을 사용 합 니 다.문제 가 또 나 왔 습 니 다.첫 번 째 는 매개 변수 값 의 개수 입 니 다.홀수 개수 라면 정상적으로 해석 할 수 있 습 니 다.짝수 개 수 를 얻 으 면 마지막 문 자 를 얻 는 것 이 어 지 러 운 코드 입 니 다.그리고 마지막 문자 가 영어 라면 정상적으로 해석 할 수 있 지만 중국어 의 문장 부 호 는 여전히 어 지 러 워 진다.미봉 책 입 니 다.만약 에 매개 변수 에 중국어 문장 부호 가 없다 면 매개 변수 값 에 마지막 으로 영문 기 호 를 추가 하여 어 지 러 운 문 제 를 해결 하고 파 라 메 터 를 얻 은 후에 이 맨 뒤의 기 호 를 제거 할 수 있 습 니 다.모 으 거나 사용 할 수도 있 습 니 다.
 
6.스 크 립 트 코드 는 url 요청 에 대해 받 아들 인 매개 변수 스 크 립 트 에서 도 페이지 전환 을 제어 하고 추가 적 인 매개 변수 와 관련 되 며 페이지 에서 이 매개 변 수 를 분석 하 는 경우 도 있 습 니 다.만약 이 한자 인자 가 URIEncoding="UTF-8"이 지정 한 인 코딩 처 리 를 하지 않 는 다 면,페이지 에서 받 아들 인 한자 도 인 코딩 입 니 다.스 크 립 트 처리 인 코딩 이 귀 찮 습 니 다.해당 인 코딩 스 크 립 트 에 대응 하 는 파일 이 있어 야 합 니 다.그리고 스 크 립 트 의 방법 으로 한 자 를 인 코딩 하면 됩 니 다.7.jsp 가 MyEclipse 에서 열 린 어 지 러 운 코드 문제 에 대해 이미 존재 하 는 항목 에 대해 Jsp 파일 의 저장 형식 은 utf-8 일 수 있 습 니 다.새로 설 치 된 eclipse 가 부족 하면 열 때 사용 하 는 인 코딩 형식 은 모두 iso 8859-1 입 니 다.그래서 jsp 에 한자 가 엉망 이 됐어 요.이 난 코드 는 비교적 쉽게 해결 할 수 있 습 니 다.eclipse 3.1 의 선 호 설정 에서 geneal->edidor 를 찾 으 면 파일 에 인 코딩 을 utf-8 로 설정 하면 됩 니 다.Eclipse 는 자동 으로 새로운 인 코딩 형식 으로 열 립 니 다.한 자 는 정상적으로 표시 할 수 있다.8.html 페이지 가 eclipse 에서 열 리 면 어 지 러 운 상황 이 발생 합 니 다.
대부분의 페이지 는 dream weaver 로 제작 되 기 때문에 저장 형식 은 eclipse 의 식별 과 차이 가 있 습 니 다.일반적으로 이 경우 eclipse 에 jsp 를 새로 만 들 고 dream weaver 에서 페이지 내용 을 복사 하여 jsp 에 붙 여 넣 으 면 됩 니 다.

좋은 웹페이지 즐겨찾기