Java, C 언어, Python 등을 포함한 대부분의 개발 플랫폼은 코드 개발 과정에서 거의 모두 중국어를 사용합니다. 컴퓨터가 이러한 작업을 처리할 때 사용자가 작성한 내용을 인식할 수 없으며 데이터를 인코딩하여 컴퓨터가 인식하고 실행할 수 있는 언어로 변환합니다. 컴파일된 코드가 디컴파일되지 않으면 우리가 보게 될 것은 이해할 수 없는 횡설수설입니다.
우선 왜 왜곡된 코드가 발생하는지 알아내야 겠죠?
서버는 데이터를 주고받을 때 어떻게 데이터를 인코딩하나요? JSP 제출 시 잘못된 코드 문제의 경우 먼저 왜 잘못된 코드가 나타나는지 파악해야 합니까? JSP 헤더 파일을 살펴보세요: <%@ page contentType="text/html;charset=UTF-8" 언어="java"%> 이 헤더 파일에는 다음이 있습니다. 인코딩 관련 속성: pageEncoding 먼저 JSP/Servlet의 여러 인코딩 기능에 대해 이야기해 보겠습니다. JSP/Servlet에서 인코딩을 설정하는 곳은 주로 다음과 같습니다. pageEncoding="UTF-8", contentType="text/html;charset=UTF-8", request.setCharacterEncoding("UTF- 8") 및 response.setCharacterEncoding("UTF-8") 중 처음 두 개는 JSP에서만 사용할 수 있고, 후자 두 개는 JSP 및 Servlet에서 사용할 수 있습니다. 다음은 Tomcat7.0을 WEB 서버로 사용할 때 한자 깨짐을 방지하는 방법을 요약한 것입니다.
1. 서버가 데이터를 보냅니다
데이터를 보내기 위해 서버는 response.setCharacterEncoding—contentType—pageEncoding의 우선 순위에 따라 보낼 데이터를 인코딩합니다.
2. 서버가 데이터를 수신합니다
데이터를 수신하는 상황은 세 가지입니다. 하나는 브라우저가 URL을 이용해 직접 제출한 데이터이고, 나머지 2개는 폼의 GET, POST 메소드를 이용해 제출한 데이터이다. 다양한 웹 서버가 이 세 가지 방법을 다르게 처리하므로 Tomcat5.0을 예로 들어 보겠습니다.
① POST에서
형식으로 제출된 데이터의 경우 response.setCharacterEncoding 또는 contentType 또는 pageEncoding이 JSP 페이지에서 "utf-8"로 설정되어 있는 한 JSP/SERVLET에 중국어 왜곡 문자가 없습니다. 데이터 질문을 받아들이는 것입니다.
② URL로 제출한 데이터와 GET 메소드로 양식으로 제출한 데이터의 경우
데이터를 받는 JSP/SERVLET에서 request.setCharacterEncoding 매개변수를 설정하는 것만으로는 충분하지 않습니다.
왜냐하면 Tomcat5.0이기 때문입니다. , 기본적으로 ISO-8859-1을 사용하여 URL로 제출된 데이터와 양식에서 GET으로 제출된 데이터를 다시 인코딩(디코딩)합니다. 이 문제를 해결하려면 Tomcat 구성 파일 서버의 커넥터 태그에 UseBodyEncodingForURI를 설정해야 합니다. .xml 또는 URIEncoding 매개변수가 모든 GET 요청(URL로 제출된 데이터 및 양식의 GET 메소드로 제출된 데이터 포함)의 균일한 레코딩(디코딩)을 위한 인코딩을 지정하는 URIEncoding 특성입니다.
useBodyEncodingForURI 매개변수는 URL로 제출된 데이터와 GET 메소드로 제출된 데이터를 양식에 다시 인코딩하기 위해 request.setCharacterEncoding 매개변수를 사용할지 여부를 나타냅니다. 기본적으로 이 매개변수는 false입니다. URIEncoding과 useBodyEncodingForURI 사이에는 URIEncoding이 있습니다. 모든 GET 요청의 데이터를 균일하게 다시 인코딩(디코딩)하는 반면, useBodyEncodingForURI는 요청에 응답하는 페이지의 request.setCharacterEncoding 매개 변수를 기반으로 데이터를 다시 인코딩(디코딩)합니다. 다른 Recoded(디코딩) 인코딩을 가질 수 있습니다. 따라서 URL로 제출된 데이터와 양식의 GET 메소드로 제출된 데이터에 대해 URIEncoding 매개변수를 브라우저 인코딩으로 수정하거나 useBodyEncodingForURI를 true로 수정하고 데이터가 있는 JSP 페이지에서 request.setCharacterEncoding 매개변수를 브라우저 인코딩으로 설정할 수 있습니다. 획득.
request.setCharacterEncoding("UTF-8")은 서버 측에서 다시 인코딩하기 위해 클라이언트가 요청한 인코딩을 설정하는 데 사용됩니다. 이 메서드는 브라우저에서 보낸 데이터를 다시 인코딩(또는 디코딩)할 때 사용되는 인코딩을 지정하는 데 사용됩니다.
response.setCharacterEncoding("UTF-8")은 클라이언트 측에서 서버 응답을 다시 인코딩하는 데 사용되는 인코딩을 지정하는 데 사용됩니다.
이 인코딩은 서버가 데이터를 브라우저로 보내기 전에 다시 인코딩할 때 사용됩니다.
1. 동일한 애플리케이션의 경우 UTF-8을 사용하는 것이 가장 좋으며, GBK도 물론 허용됩니다.
2. JSP
3의 pageEncoding="UTF-8"을 올바르게 설정합니다. contentType="text/html;charset=UTF-8" 또는 response.setCharacterEncoding("UTF-8")을 설정하여 간접적으로 설정합니다. 브라우저 인코딩.
4. 양식으로 제출되지 않은 get 또는 url 요청의 경우 Tomcat의 기본 구성을 수정할 수 있습니다. useBodyEncodingForURI 매개변수를 true로 설정하거나 URIEncoding 매개변수를 UTF-8( 다른 응용 프로그램에 영향을 줄 수 있으므로 권장하지 않습니다)). 또는 데이터 수신 시 다음 방법을 사용하여 처리합니다.
request.getParameter("userID"), userID 값 가져오기
request.getParameter("userID").trim() 양쪽 공백 제거 이 값
request.getParameter("userID").trim().getBytes("ISO-8859-1")) ISO-8859-1
new String(request . getParameter("userID").trim().getBytes("ISO-8859-1"),"utf-8") 방금 바이트 수를 문자열 생성자에 전달하여 "utf-8에 따라 문자열을 생성합니다. " 문자열 개체를 인코딩합니다.
5. URLEncoder 사용 방법
매개변수 전달 전 사용:
//지정된 인코딩 메커니즘을 사용하여 문자열을 application/x-www-form-urlencoded 형식으로 변환
String username_encoder = URLEncoder. encode(username, "UTF-8");
매개변수를 받은 후 다음을 표시합니다.
//지정된 인코딩 메커니즘을 사용하여 애플리케이션/x-www-form-urlencoded 문자열을 디코딩합니다.
String username_decoder = URLDecoder .decode(request.getParameter("사용자 이름"),"UTF-8");
위 내용은 JSP에서 중국어 왜곡 문자를 처리하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!