02.Get请求中文乱码问题

 

复制代码
package com.gyf.web.servlet.lesson02;

import java.io.IOException;
import java.util.Arrays;

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


@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**
         * Get请求中文乱码问题
         * 1.在tomcat8以上的版本,get请求已经不会有乱码的问题
         * 2.在tomcat7以前的版本,get请求有乱码的问题
         * 
         * 原因?
         * 客户端传到服务器的编码是UTF-8
         * 在 tomcat7中,在接收客户端的请求数据是以ISO-8859-1的形式来接收
         * 在tomcat8以后,在接收客户端的请求数据就是UTF-8
         */
        
        //1.获取请求参数
        String username = request.getParameter("username");
        String[] hobbies =request.getParameterValues("hobby");
        
        //byte[] buf = {23,18,23}
        //2.还原UTF-8编码
        username = new String(username.getBytes("ISO-8859-1"), "UTF-8");
        
        for(int i=0;i<hobbies.length;i++){
            String hobby = hobbies[i];
            hobby = new String(hobby.getBytes("ISO-8859-1"), "UTF-8");
            //替换
            hobbies[i] = hobby;
        }
        /*for(String hobby : hobbies){
            
            System.out.println("hobby:" + hobby);
        }*/
    
        
        
        System.out.println("username:" + username);
        System.out.println("hobbies:" + Arrays.toString(hobbies));
    
    }

}
复制代码

 

posted @   expworld  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示