zoukankan      html  css  js  c++  java
  • get与post中文乱码问题

    Jsp默认的字符编码格式是iso-8859-1

    因为post方法与get方法传递参数的方式不一样,所以有不同的解决方法。

    一、post乱码解决方法:
     1.设置请求和响应的编码方式
     //设置请求的编码格式
     request.setCharacterEncoding("UTF-8");
     //设置响应的编码格式
     response.setCharacterEncoding("UTF-8");
     或者
     <%@page language="java" contentType="text/html;charset=utf-8"%>

    post中文乱码还可以设置filter过滤器,直接使用代码就可以,最后要去web.xml中配置

    public class CharacterEncoding implements Filter {
    
        @Override
        public void destroy() {
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            //这是post中文乱码的处理方式,get中文处理方式是在tomcat中配置
            //设置字符编码
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            //注意这句一定要有,作用是将请求转发给过滤器链上下一个对象
            //filter链
            chain.doFilter(request, response);
            //然后还要去web.xml中配置
        }
    
        @Override
        public void init(FilterConfig arg0) throws ServletException {
        }
    
    }

    filter在web.xml中的配置代码 

     <filter>
          <filter-name>CharacterEncoding</filter-name>
          <filter-class>filter.CharacterEncoding</filter-class>
      </filter>
      <filter-mapping>
          <filter-name>CharacterEncoding</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>

    二、get乱码解决方法:
     1.治标方法
     //先获取登录页面username的数据
     String username=request.getParameter("username");
     //将username字符编码改为utf-8
     String un=new String(username.getBytes("iso-8859-1"),"utf-8");
     //然后打印输出un
     out.print(un);

     2.治本方法
     在Tomcat安装目录下找到server.xml文件找到下面代码添加 URIEncoding="UTF-8"
     D:Program Filesapache-tomcat-8.0.33apache-tomcat-8.0.33confserver.xml
       <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"  URIEncoding="UTF-8"/>

     或者
     添加  useBodyEncodingForURI="true"
     <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443"  useBodyEncodingForURI="true"/>

    ---------------------------------------------------------------------------------------------------------------

    在datebase.properties配置文件中 加入下面这句代码

    可以避免中文输入到数据库产生乱码的情况

    url=jdbc:mysql://127.0.0.1:3306/news?useUnicode=true&characterEncoding=utf-8

  • 相关阅读:
    Ural 1201 Which Day Is It? 题解
    Ural 1250 Sea Burial 题解
    2019 Multi-University Training Contest 2: 1010 Just Skip The Problem 自闭记
    Codeforces 718A Efim and Strange Grade 程序分析
    CentOS7 修改MySql默认端口
    Ubuntu 18.04 版本中安装mysql 8的方法
    NET_NET深入体验与实战 第一章 .NET你知道 1.1什么是 .NET
    第五课
    c# 第一节课 一些简单的应用
    MDI窗体和窗体之间的操作总结
  • 原文地址:https://www.cnblogs.com/fifiyong/p/5930535.html
Copyright © 2011-2022 走看看