페이지 매개 변수 가져 오기의 중국어 왜곡 문제

페이지 매개 변수 가져 오기의 중국어 왜곡 문제

getParameter ( "name") 메서드를 통해 페이지 매개 변수를 획득 할 때 페이지 매개 변수를 중국어로 입력하면 획득 한 중국어 매개 변수에 문자가 깨지는 문제가 발생합니다.
예 :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="test01" method="post">
    账号:<input type="text" placeholder="请输入姓名" name="username">
    <br>
    密码:<input type="text" placeholder="请输入密码" name="password">
    <input type="submit" value="提交">
</form>
</body>
</html>

작업 결과 :
여기에 사진 설명 삽입

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/test01")
public class test01_Servlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        String username = request.getParameter("username");   //获取username的值
        System.out.println(username);    //打印
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request, response);
    }
}

여기에 사진 설명 삽입
Get method : 문제가 Tomcat에서 내부적으로 해결 되었기 때문에 잘못된 문자가 제출물에 나타나지 않습니다.
Post method : 깨진 문자가 나타납니다.

솔루션 :
사후 요청을 사용할 때 요청 본문이 스트림으로 패키징되고
이전 포트 페이지와 동일한 문자 인코딩 형식을 설정 해야하므로 스트림의 문자 인코딩 형식을 설정하십시오.

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/test01")
public class test01_Servlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        request.setCharacterEncoding("utf-8");   //设置编码格式
        String username = request.getParameter("username");
        System.out.println(username);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        this.doPost(request, response);
    }
}

작업 결과 :
여기에 사진 설명 삽입

추천

출처blog.csdn.net/tan1024/article/details/111560572