ページパラメータを取得する際の中国語の文字化けした問題

ページパラメータを取得する際の中国語の文字化けした問題

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メソッド:問題はTomcatで内部的に解決されているため、文字化けした文字は送信に表示されません
。postメソッド:文字化けした文字が表示されます

解決策:
POSTリクエストを使用する場合、リクエストの本文はストリームにパッケージ化さ
れ、前のポートページと同じ文字エンコード形式を設定する必要があるため、ストリームの文字エンコード形式を設定します。

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