精华内容
下载资源
问答
  • 2021-02-12 20:38:23

    方法1:

    将接收到的中文乱码重新编码。

    //get请求方式接收到的中文字符串

    String name = request.getParameter("userName");

    //将中文字符重新编码 默认编码问 ISO-8859-1

    String userName = new String(name.getByte("ISO-8859-1"),"utf-8");

    方法2:

    如果你使用的是Tomcat服务器,那么我们可以在服务器指定配置文件中加入如下代码:

    找到Tomcat服务器的安装目录--->conf--->server.xml--->找到有8080标记的地方

    如下:

    connectionTimeout="20000"

    redirectPort="8443" />

    在此标签中加入代码  URIEncoding='utf-8'

    在此我是以utf-8为例你可以适当选择支持中文的编码gbk gb2312 总之要和项目中编码统一,否则依然会有乱码。

    更多相关内容
  • 下面小编就为大家带来一篇页面get请求 中文参数方法乱码问题的快速解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Android中HTTP请求中文乱码解决办法  编码参数 List<NameValuePair> formparams = new ArrayList(); // 请求参数 for (NameValuePair p : params) { formparams.add(p); } UrlEncodedFormEntity entity = new ...
  • IE 浏览器在get请求中文乱码问题
  • 可以解决post get请求乱码问题.
  • 下面小编就为大家带来一篇完美解决Get和Post请求中文乱码问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • https://blog.csdn.net/myWorld001/article/details/109261850
  • 本文主要解决的是POST和GET两种请求方式,希望对你有帮助!!! 文章目录1、POST乱码1.1、在web.xml中配置1.2、具体的处理方式2、GET乱码2.1、在tomcat服务器中添加编码3、使用一个万能的配置类(解决POST和GET) 1...

    写在前面:这个只是问题只需要添加一个简单的配置就可以了,并且对应的代码在程序中是死的,我们只需要按照对应的格式进行编码就可以了。


    本文主要解决的是POST和GET两种请求方式,希望对你有帮助!!!




    1、POST乱码


    1.1、在web.xml中配置

    SpringMVC中,其为我们提供了过滤器CharacterEncodingFilter

    在该类中,有一个核心的方法:

    public class CharacterEncodingFilter extends OncePerRequestFilter {
    
        ...
            
        @Nullable
        private String encoding;
    
        private boolean forceRequestEncoding = false;
        private boolean forceResponseEncoding = false;
    
    
        @Override
        protected void doFilterInternal(
            HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
    
            String encoding = getEncoding();
            if (encoding != null) {
                if (isForceRequestEncoding() || request.getCharacterEncoding() == null) {
                    request.setCharacterEncoding(encoding);
                }
                if (isForceResponseEncoding()) {
                    response.setCharacterEncoding(encoding);
                }
            }
            filterChain.doFilter(request, response);
        }
    }
    

    我们只需要对该类中的核心的方法进行对应的配置,就可以完成对应的POST请求中文乱码


    1.2、具体的处理方式

    配置方式,在web.xml中添加下面的配置代码:

    <filter>
        <filter-name>encoding</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
            <!-- 后面这两个可以不用添加 -->
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    




    2、GET乱码


    2.1、在tomcat服务器中添加编码

    apache-tomcat-8.5.37 --> conf --> server.xml

    在第一个Connector标签中,添加对应的UTF编码

     <Connector URIEncoding="UTF-8"  port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLNxUihw-1592008515693)(09_SpringMVC中如何解决POST请求中文乱码问题.assets/image-20200607223700256.png)]


    3、使用一个万能的配置类(解决POST和GET)

    编写对应的过滤器类,然后在web.xml中配置这个过滤器即可!

    package com.kuang.filter;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletRequestWrapper;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.Map;
    
    /**
     * 解决get和post请求 全部乱码的过滤器
     */
    public class GenericEncodingFilter implements Filter {
    
        @Override
        public void destroy() {
        }
    
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            //处理response的字符编码
            HttpServletResponse myResponse=(HttpServletResponse) response;
            myResponse.setContentType("text/html;charset=UTF-8");
    
            // 转型为与协议相关对象
            HttpServletRequest httpServletRequest = (HttpServletRequest) request;
            // 对request包装增强
            HttpServletRequest myrequest = new MyRequest(httpServletRequest);
            chain.doFilter(myrequest, response);
        }
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }
    
    }
    
    //自定义request对象,HttpServletRequest的包装类
    class MyRequest extends HttpServletRequestWrapper {
    
        private HttpServletRequest request;
        //是否编码的标记
        private boolean hasEncode;
        //定义一个可以传入HttpServletRequest对象的构造函数,以便对其进行装饰
        public MyRequest(HttpServletRequest request) {
            super(request);// super必须写
            this.request = request;
        }
    
        // 对需要增强方法 进行覆盖
        @Override
        public Map getParameterMap() {
            // 先获得请求方式
            String method = request.getMethod();
            if (method.equalsIgnoreCase("post")) {
                // post请求
                try {
                    // 处理post乱码
                    request.setCharacterEncoding("utf-8");
                    return request.getParameterMap();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            } else if (method.equalsIgnoreCase("get")) {
                // get请求
                Map<String, String[]> parameterMap = request.getParameterMap();
                if (!hasEncode) { // 确保get手动编码逻辑只运行一次
                    for (String parameterName : parameterMap.keySet()) {
                        String[] values = parameterMap.get(parameterName);
                        if (values != null) {
                            for (int i = 0; i < values.length; i++) {
                                try {
                                    // 处理get乱码
                                    values[i] = new String(values[i]
                                            .getBytes("ISO-8859-1"), "utf-8");
                                } catch (UnsupportedEncodingException e) {
                                    e.printStackTrace();
                                }
                            }
                        }
                    }
                    hasEncode = true;
                }
                return parameterMap;
            }
            return super.getParameterMap();
        }
    
        //取一个值
        @Override
        public String getParameter(String name) {
            Map<String, String[]> parameterMap = getParameterMap();
            String[] values = parameterMap.get(name);
            if (values == null) {
                return null;
            }
            return values[0]; // 取回参数的第一个值
        }
    
        //取所有值
        @Override
        public String[] getParameterValues(String name) {
            Map<String, String[]> parameterMap = getParameterMap();
            String[] values = parameterMap.get(name);
            return values;
        }
    }
    
    展开全文
  • tomcat7中get请求中文乱码问题

    千次阅读 2019-12-19 15:01:50
    昨天发现放在 服务器上的后台管理系统 项目,...没问题是正常 的utf-8,然后查看数据库编码,但是想着数据库中存储的数据都是中文,数据库没有出现乱码应该不是数据库的问题。然后开始看项目问题,项目前端jsp页面头...

    昨天发现放在 服务器上的后台管理系统 项目,对列表进行搜索时搜索不到,查看tomcat日志发现传递到后台的参数是乱码,因此sql语句搜索不到指定的数据,于是开始了修改 乱码的问题。

    首先查看服务器的编码格式通过命令locale打印出
    在这里插入图片描述
    没问题是正常 的utf-8,然后查看数据库编码,但是想着数据库中存储的数据都是中文,数据库没有出现乱码应该不是数据库的问题。然后开始看项目问题,项目前端jsp页面头部也添加了utf-8,因此不是前端的问题。

    再去看请求方式的问题,经过测试,接口通过post请求不会出现乱码,后台接收到的都是正常的中文,于是看 页面的请求方式,问题找到了,页面请求后台的方式是get,于是测试了所有的页面都是get请求,都会 出现乱码的问题,因此问题就出在了get请求乱码的问题。
    对于get请求的理解,我只知道参数会添加在url进行传输, 并且会对传输的中文进行编码,相应的那我后台获得参数的时候应该也要解码,然后才能得到相应的中文,于是百度看解决方法,方法如下:

    1、修改tomcat中的server.xml文件

    修改

    <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443"  />
    

    <Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />
    

    然后重启tomcat,运行项目,搜索 ,结果依然乱码(。。。。。。。。。。。)

    (此方法对我无用)

    2、手动解码

    对前端编码的参数 进行节码,解码代码如下

    if(user.getName()!=null){
    	String str = new String(user.getName().getBytes("iso8859-1"),"UTF-8");
    	user.setName(str);
    }
    

    重新打包项目上传,启动tomcat,运行测试,乱码(。。。。。。。。。。。。。。。。。。。)
    (内心一万只why飞奔而过)

    想不通到底哪里出问题,前端输入中文,前端通过utf-8格式编码,然后通过tomcat服务器(默认iso-8895-1格式)编码,到后台我先iso-8895-1解码,再utf-8解码,为什么还得不到中文???

    最后只能使用终极大招,重新安装tomcat,安装tomcat8,一通配置,打包运行,完美!!!

    记录一次不知道什么原因的get请求乱码问题。希望哪个大佬能解答一下疑惑,万分感谢!!

    展开全文
  • 之前在学习的过程中出现了post表单请求中文乱码问题,配置了过滤器之后...post请求乱码: <!-- 配置解决中文乱码的过滤器--> <filter> <filter-name>characterEncodingFilter</filter-name&...

    之前在学习的过程中出现了post表单请求中文乱码问题,配置了过滤器之后解决了。但是刚刚又出现了中文乱码问题,仔细一看,原来是get请求。查阅资料之后解决方案如下:
    post请求乱码:

    <!--  配置解决中文乱码的过滤器-->
      <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    

    get请求乱码:
    找到tomcat下的conf/server.xml文件
    找到第一个Connector标签添加 URIEncoding="UTF-8"如下

    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
    
    展开全文
  • 我们在javaWeb项目时,使用doget和dopost总是会出现各种原因的中文乱码问题,楼主在查阅大量资料后,将为什么有这样的问题,和如何解决这种问题做个总结。 思维导图: 1. 应答乱码处理(response输出页面时乱码) 1.1 ...
  • 在servlet中添加打印,发现请求过来就是乱码了,排除mysql apache-tomcat-9.0.62/conf/web.xml增加如下配置,此配置只是过滤post请求编码问题 <!--4.x--> webapps/examples/WEB-INF/classes/filters/...
  • POST请求中文乱码问题: 使用CharacterEncodingFilter这个过滤器 在xml文件里配置encoding为utf-8即可 <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>...
  • get请求中文乱码问题解决

    千次阅读 2019-01-24 11:29:31
    一般情况下get请求传值中文不同浏览器会出现乱码问题,可通过JS进行二次编码,后台Java解码进行解决。 jsp页面对于文字部分处理: encodeURI(encodeURI(document.getElementById("faultAddr").value)); ...
  • NULL 博文链接:https://rengh8288.iteye.com/blog/391851
  • 介绍了jsp中ajax的get请求中文乱码问题的解决方法,有需要的朋友可以参考一下
  • http请求中文乱码问题

    千次阅读 2018-10-11 15:58:15
    最近在开发android项目过程中,使用okhttp3来发送请求,频繁遇到在post请求时,在服务器一端获取参数时遇到中文乱码,而且竟然get请求不会乱码,放到另一个工程项目下也不会乱码,这就令人很奇怪了。 经过对比,...
  • 主要介绍了Java Http请求传json数据乱码问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Struts2提供了一个默认的过滤器,在post请求中一般不会出现中文乱码问题,单在get请求中极易出现中文乱码问题。 1.在strurs2.xml中配置以下代码 <!-- constant 配置 --> <!-- 用于设置默认的本地编码 -->...
  • java中get请求中文乱码的解决办法:1、手动解码,代码为【param=newString(param.getBytes("iso8859-1"), "utf-8")】;2、配置tomcat, 修改tomcat的【server.xml】。java中get请求中文乱码的解决办法:方式一:手动...
  • 1. 修改 tomcat 配置文件添加编码与工程编码...-- 添加属性URIEncoding="utf-8"可以解决get乱码问题,然后重启服务器--> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redire...
  • tomcat8.5及以上get请求tomcat会帮你解决乱码问题,但是还是会有不能解决的时候,可能原因是 1.server.xml文件中 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443...
  • 如何解决java中get请求中文乱码问题发布时间:2020-07-28 16:37:37来源:亿速云阅读:85作者:Leah如何解决java中get请求中文乱码问题?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多...
  • 搜索框输入中文汉字到后台request.getParameter接收乱码了。 解决方案: 因为是修改tomcat的配置文件server.xml 找到这行: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirect...
  • 比较难解决的就是这个GET请求如果包含中文且发送时候没有用URL编码的话,直接就乱码了.无法进行后续的处理了.报错如下: org.springframework....
  • 下面小编就为大家带来一篇解决nodejs中使用http请求返回值为html时乱码问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • get请求乱码问题 java

    2012-10-11 19:33:13
    get请求乱码问题 java

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,169
精华内容 44,467
关键字:

get请求中文乱码问题