WEB 중국어 난 코드 해결 적용 (다양한 방법)
1. 초급 해결 방법
한 번 의 검색 을 통 해 많은 사람들 이 다음 과 같은 방법 을 채택 했다. 먼저 얻 은 문자열 을 iso 8859 - 1 에 따라 디 코딩 변환 한 다음 에 gb 2312 에 따라 인 코딩 을 한 다음 에 정확 한 내용 을 얻 었 다.예제 코드 는 다음 과 같다.
String para = new String( request.getParameter("para").getBytes("iso8859-1"), "gb2312");
구체 적 인 이 유 는 미국인 들 이 tomcat 를 쓸 때 기본적으로 iso 8859 - 1 을 사용 하여 인 코딩 을 하기 때문이다.
그러나, 우리 의 servlet 과 jsp 페이지 에 대량의 매개 변 수 를 전달 해 야 합 니 다. 이렇게 전환 하면 대량의 변환 코드 를 가 져 올 수 있 고 매우 불편 합 니 다.
2. 입문 급 해결 방법
나중에 필 터 를 쓰기 시 작 했 습 니 다. 클 라 이언 트 가 보 낸 인 자 를 얻 기 전에 필 터 를 통 해 먼저 얻 은 매개 변수 인 코딩 을 gb 2312 로 설정 한 다음 에 getParameter 를 사용 하여 정확 한 인 자 를 얻 을 수 있 습 니 다.이 필 터 는 tomcat 의 예제 코드 jsp - examples 에서 상세 한 사용 예제 가 있 습 니 다. 그 중에서 필 터 는 웹. xml 에서 다음 과 같이 설정 되 어 있 습 니 다. 예제 에서 사용 하 는 것 은 일본어 인 코딩 입 니 다. 저 희 는 gb 2312 로 수정 하면 됩 니 다.
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC_JP</param-value>
</init-param>
</filter>
필터 의 코드 는 다음 과 같 습 니 다.
public class SetCharacterEncodingFilter implements Filter {
//
protected String encoding = null;
//
protected FilterConfig filterConfig = null;
//
protected boolean ignore = true;
//
public void destroy() {
this.encoding = null;
this.filterConfig = null;
}
//
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
// , ,
if (ignore || (request.getCharacterEncoding() == null)) {
String encoding = selectEncoding(request);
if (encoding != null)
request.setCharacterEncoding(encoding);
}
//
chain.doFilter(request, response);
}
//
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
this.ignore = true;
else if (value.equalsIgnoreCase("true"))
this.ignore = true;
else if (value.equalsIgnoreCase("yes"))
this.ignore = true;
else
this.ignore = false;
}
//
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
그러나 tomcat 5 에 서 는 필 터 를 사용 하 더 라 도 어 지 러 운 코드 를 얻 을 수 있 습 니 다. 그 이 유 는 무엇 입 니까?
3. 고급 해결 방법
이 는 tomcat 4 와 tomcat 5 에서 매개 변 수 를 처리 하 는 것 이 다 르 기 때문에 tomcat 4 에서 get 과 post 의 인 코딩 이 같 기 때문에 필터 에서 request. setCharacterEncoding 을 통 해 한 번 만 설정 하면 get 과 post 의 문 제 를 해결 할 수 있 습 니 다.그러나 tomcat 5 에서 get 과 post 의 처 리 는 분리 되 어 진행 되 었 습 니 다. tomcat 5 에서 인 코딩 문 제 를 해결 하기 위해 tomcat 의 작 가 는 많은 노력 을 했 습 니 다. 구체 적 으로 는 tomcat 의 프로필 server. xml 에서 Connector 요 소 를 다음 과 같은 설정 파 라 메 터 를 추가 하여 인 코딩 을 직접 설정 하 는 것 으로 나 타 났 습 니 다.
URIEncoding: URI 를 통 해 전 달 된 내용 에 사용 할 인 코딩 을 설정 합 니 다. tomcat 는 여기 서 지정 한 인 코딩 을 사용 하여 클 라 이언 트 가 전송 한 내용 을 인 코딩 합 니 다.
URI 가 뭐 죠?
자바 doc 의 설명 은 다음 과 같다. URI 는 통 일 된 자원 식별 자 이 고 URL 은 통 일 된 자원 포 지 셔 닝 문자 이다.따라서 모든 URL 이 URI 이지 만 모든 URI 가 URL 인 것 은 아니다.이 는 URI 에 자원 이름 (URN) 을 통일 하 는 하위 클래스 도 포함 되 어 있 기 때 문 입 니 다. 자원 이름 은 지정 되 어 있 지만 자원 을 찾 는 방법 은 지정 되 지 않 습 니 다.
즉, 우리 가 get 방법 을 통 해 제출 한 매개 변 수 는 실제 적 으로 uri 를 통 해 제출 된 것 이 고 모두 이 매개 변 수 를 관리 합 니 다. 이 매개 변 수 를 설정 하지 않 으 면 tomcat 는 기본 적 인 iso 8859 - 1 을 사용 하여 클 라 이언 트 의 내용 을 인 코딩 합 니 다.
useBody Encoding ForURI: Body 와 같은 인 코딩 으로 URI 를 처리 합 니 다. 이 설정 은 tomcat 4 와 호 환 되 기 위해 서 입 니 다. 원래 tomcat 4 와 tomcat 5 중대 매개 변 수 는 다 르 고 tomcat 4 에서 get 과 post 의 인 코딩 은 같 습 니 다.따라서 필터 에 request. set CharacterEncoding 을 한 번 만 설정 하면 get 과 post 문 제 를 해결 할 수 있 습 니 다.그러나 tomcat 5 에서 get 과 post 의 처 리 는 분리 되 어 진행 되 며, get 의 처 리 는 앞의 URIEncoding 을 통 해 처리 되 며, post 의 내용 은 여전히 request. setCharacterEncoding 을 통 해 처리 되 며, 호환성 을 유지 하기 위해 이 설정 이 있 습 니 다.
useBody Encoding ForURI 를 진짜 로 설정 하면 request. set CharacterEncoding 을 통 해 get 과 post 의 난 코드 문 제 를 직접 해결 할 수 있 습 니 다.
이렇게 하면 server. xml 에 URIEncoding 을 설정 하여 get 방법 중의 매개 변수 문 제 를 해결 하고 필 터 를 사용 하여 post 방법 중의 문 제 를 해결 할 수 있 습 니 다.
또는 server. xml 에서 useBody Encoding ForURI 를 true 로 설정 하여 필터 에 맞 춰 인 코딩 문 제 를 해결 할 수도 있 습 니 다.
여기 서 저 는 사이트 의 창작 과정 에서 utf - 8 인 코딩 을 사용 하여 어 지 러 운 문 제 를 철저히 해결 할 것 을 강력 히 건의 합 니 다.
구체 적 인 조작 은 다음 과 같다.
1. 페이지 내용 은 utf - 8 형식 으로 저장 하고 페이지 에 < mete http - equiv = "contentType" c > 를 추가 합 니 다.
2. 서버 쪽 server. xml 에 useBody Encoding ForURI = true 설정
3, 필터 사용, 필터 설정 인 코딩 utf - 8
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
EC2 인스턴스에 Tomcat 설치전제 조건: Amazon 계정이 있어야 합니다. Amazon 계정에 로그인하고 EC2 인스턴스를 시작합니다. 여기에서 프리 티어를 선택했고 Amazon Linux 2를 실행하는 EC2 인스턴스를 시작했습니다. 시작 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.