먼저, 인코딩이 통일되어 있는 한 왜곡된 문자가 나타나지 않는 곳을 살펴보겠습니다. (개인적으로 가장 좋다고 생각하는) uft-8을 예로 들어보겠습니다.
1. JSP 페이지에서 잘못된 코드가 나타나는 경우 JSP 헤더 페이지를 추가하세요.
<%@ page Language="java" pageEncoding="UTF-8" % >
head 태그에 태그를 추가합니다.
2. 서블릿에 잘못된 문자가 나타나면 두 가지 방법이 있습니다.
하나는 각 서블릿 UTF의 doget 및 doPost 메소드 헤더에
request.setCharacterEncoding("을 추가하는 것입니다. 8″);
두 번째 옵션은 가장 안전한 것으로, 국제화라고도 하는 전용 필터 클래스를 작성하는 것입니다. 클래스 이름은 SetCharacterEncodingFilter이고 내용은 다음과 같습니다
package com.sharep.filter;//包名 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; 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 this.ignore = false; } 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 destroy() { this.encoding = null; this.filterConfig = null; } protected String selectEncoding(ServletRequest request) { return (this.encoding); } }
그런 다음 web-inf에서 web.xml에 다음 코드를 추가합니다.
<filter> <filter-name>SetCharacterEncoding</filter-name> <filter-class>com.young.filter.SetCharacterEncodingFilter</filter-class>//注意这里是类名,要有完整包名 <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>SetCharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
그렇습니다!
3. 그래도 문자가 깨져 있으면 mysql 데이터베이스에 문제가 있는 것입니다.
1) 데이터베이스 생성 시 데이터베이스 인코딩이 UTF-8인지 확인하세요. 각 테이블에 인코딩 형식을 지정하는 것이 가장 좋습니다. 기본 mysql은 latin1입니다.
2) mysql 버전이 UTF-8인 경우 4.x 이상에서는 여전히 잘못된 문자가 데이터베이스에 나타납니다. 해결 방법은 두 가지입니다.
첫 번째는 데이터베이스에 연결하기 위해 코드에서 인코딩 방법을 지정하는 것입니다.
String url = “jdbc:mysql://localhost:3306/test2?autoReconnect=true&useUnicode=true&characterEncoding=gbk&mysqlEncoding=utf8″ ;
그래도 여전히 문제가 발생하는 경우 작동하지 않으면
show variables like ‘collation_%';
명령을 사용하세요. 기본 문자 집합을 확인하세요. utf-8이 아닌 경우 my.ini(windows) 또는 my.cnf(linux)에서 해당 인코딩을 utf8로 변경하세요. ) 그런 다음 mysql 서버를 다시 시작하세요.
더 많은 jsp 및 서블릿 작업 mysql의 중국어 문자 문제 해결에 대한 관련 기사는 PHP 중국어 웹사이트에 주목하세요!