중국어 디코딩 오류 (웹 페이지, 서버와 전송 정보에 나타난 중국어 문제 해결 방안)
13674 단어 중국어 부호
첫 번째 클래스 질문은 JSP에 나타납니다.
오류 페이지:
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%@ page contentType="text/html;charset=iso8859-1"%>
3 <html>
4 <head>
5 <title> </title>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 </head>
8 </head>
9 <body>
10 !! ??
11 </body>
12 </html>
이 페이지는 인코딩 설정과 관련된 세 가지 부분이 있습니다.
첫 번째 인코딩 형식은 jsp 파일의 저장 형식입니다.Eclipse는 이 인코딩 형식에 따라 파일을 저장합니다.그리고 jsp 파일을 컴파일합니다. 안에 있는 한자를 포함합니다.
두 번째 인코딩은 디코딩 형식입니다.이 페이지에 UTF-8로 저장된 파일은 iso8859-1로 디코딩되어 페이지의 중국어는 틀림없이 혼란스러울 것이다.이 줄이 없으면 기본적으로 iso8859-1의 인코딩 형식을 사용합니다.그러니까 첫 번째와 두 번째가 일치해야 돼.
세 번째 인코딩은 브라우저를 제어하는 디코딩 방식입니다.만약 앞의 디코딩이 일치하고 오류가 없다면, 이 인코딩 형식은 생략할 수 있습니다.브라우저가 어떤 인코딩 형식을 사용할지 확정할 수 없기 때문에 어떤 웹 페이지에 난호가 발생한다.페이지가 때때로 페이지를 끼워 넣기 때문에 브라우저가 인코딩 형식을 혼동하여 혼란이 생겼다.
수정된 페이지: UTF-8 gb2312 로 변경되었지만 코드가 변경되지 않았습니다.
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%@ page contentType="text/html;charset=UTF-8"%>
3 <html>
4 <head>
5 <title> </title>
6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7 </head>
8 </head>
9 <body>
10 。 !
11 </body>
12 </html>
두 번째 유형의 문제는 데이터 전송(GET 및 POST 참조 시 디코딩 발생)
원인:
tomcat의 내부 인코딩 형식 iso8859-1.
데이터를 제출할 때 제출한 인코딩 형식을 설정하지 않으면 iso8859-1 방식으로 제출하고, 받아들인 jsp는utf-8 방식으로 받아들여 혼란을 초래합니다.
솔루션:
1. GET 요청 매개변수 처리
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ;모든 중국어 문자열을 디코딩합니다.
B, POST 요청 매개변수 처리
요청 처리 페이지의 시작 부분에서 요청을 실행하는 인코딩 코드,request.setCharacterEncoding("UTF-8"), 제출된 내용의 문자 집합을 UTF-8로 설정합니다.String str = request 를 사용합니다.getParameter("something");한자 파라미터를 얻을 수 있다.
적용 예: (1)
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%@ page contentType="text/html;charset=UTF-8"%>
3 <%
4 request.setCharacterEncoding("UTF-8");
5 %>
6 <html>
7 <head>
8 <title> </title>
9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
10 </head>
11 </head>
12 <body>
13 。 !
14 </body>
15 </html>
(2) 요청을 처리하는 Servlet의 doPost 방법에 request를 추가합니다.setCharacterEncoding("UTF-8")은 효과가 동일합니다.
(3) 위의 예에서 UTF-8은 gb2312로 변경해도 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java, 로컬 파일 읽기 및 쓰기 문제 해결Java, 로컬 파일 읽기 및 쓰기 문제 해결 선언: 자바 프로그램으로 중국어를 포함하는 txt 파일을 읽거나 쓸 때 자주 읽거나 쓰는 내용이 혼란스러워집니다.원인은 사실 매우 간단하다. 바로 시스템의 인코딩과 프로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.