java web中文乱码处理笔记

一、发生中文乱码的情况有以下三种:

1.表单form的两种提交出现中文乱码

① get提交   ② post提交

2.超链接(本质是get提交)出现中文乱码

3、sendRedirect(发生乱码)

二、乱码产生的原因:

  浏览器编码 utf-8 发送请求给服务器是会产生编码不一致的情况
所以在发送请求是先定义编码,就能很好的解决编码的问题

三、解决乱码的几种简单方式:

  post方法提交:解决方案如下: request.setCharacterEncoding(“utf-8”);

get方法使用该方法的时候还是不能解决问题依然出现乱码,针对get提交所用的处理方法

封装成为一个工具类来处理:

public class Mytool{
    public static String getNewString(String str){
        String newString="";
        try{
        newString= new String(str.getBytes("iso-8859-1"), "utf-8");
        }catch(Exception e){
            e.printStackTrace();
        }
        return newString;
    }
}

调用工具类:

String u = request.getParameter("username");
Mytool.getnewString(u);

  超链接的提交方式和get的提交处理是一样的

四、兼容浏览器的版本信息问题,如果IE6或以下版本,第二、三种会出现乱码

  超链接乱码 和 sendRedirect乱码
String info=java.net.URLEncoder encode("你好吗.jpg",“utf-8”);
<a href="" + info>测试</a>
response.sendRedirect("servlet地址 ?username= " + info);

后记:

  在服务器端是中文,在response的时候,也要考虑浏览器是否显示正确
response.setCharacterEncoding(“utf-8”);
response.setContentType("text/html;charset=utf-8")

原文地址:https://www.cnblogs.com/qingcong/p/5902478.html