zoukankan      html  css  js  c++  java
  • request 中文乱码问题

    当使用request.setCharacterEncoding(charset);时,只能解决表单方法为POST的中文

    乱码情况,而方法为GET的依然为乱码。

    解决GET乱码:

    1. String str =request.getParameter("URL后面的变量名");  
    2.   
    3.    
    4.   
    5. byte b[] =str.getBytes("ISO-8859-1");  
    6.   
    7.    
    8.   
    9. str = newString(b); 

    ==================================================

    解决request中文乱码的问题

    request.setCharacterEncoding(charset);必须写在第一次使用request.getParameter

    ()之前,

    这样才能保证参数是按照已经设置的字符编码来获取。

    response.setCharacterEncoding(charset);必须写在PrintWriter out =

    request.getWriter()之前,

    这样才能保证out按照已经设置的字符编码来进行字符输出。

    通过过滤器,我们可以保证在Servlet或JSP执行之前就设置好了请求和响应的字符编码

    但是这样并不能完全解决中文乱码问题:

    对于post请求,无论是“获取参数环节”还是“输出环节"都是没问题的;

    对于get请求,"输出环节"没有问题,但是"获取参数环节"依然出现中文乱码,所以在输

    出时直接将乱码输出了。

    原因是post请求和get请求存放参数位置是不同的:

    post方式参数存放在请求数据包的消息体中。get方式参数存放在请求数据包的请求行的

    URI字段中,

    以?开始以param=value&parame2=value2的形式附加在URI字段之后。而

    request.setCharacterEncoding(charset);

    只对消息体中的数据起作用,对于URI字段中的参数不起作用。

    当使用request.setCharacterEncoding(charset);时,只能解决表单方法为POST的中文

    乱码情况,而方法为GET的依然为乱码。

    解决GET乱码:

      1. String str =request.getParameter("URL后面的变量名");  
      2.   
      3.    
      4.   
      5. byte b[] =str.getBytes("ISO-8859-1");  
      6.   
      7.    
      8.   
      9. str = newString(b); 
  • 相关阅读:
    [数据结构]直接插入排序
    隐藏小程序scroll-view组件的滚动条
    当 uni-app 遇见 vscode
    npm(你怕吗) 全局安装与本地安装、开发依赖和生产依赖
    Vue-resource的使用
    spy-debugger调试、抓包工具
    一个小时学会Git
    flex布局踩过的坑
    Html5移动端布局及(rem布局)页面自适应布局详解
    使用vscode自动编译less
  • 原文地址:https://www.cnblogs.com/cyh123/p/3203898.html
Copyright © 2011-2022 走看看