• 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); 
  • 相关阅读:
    钱到用时方恨少(随记)
    Ring0 打印log文件
    Mutation Testing(变异测试)
    GitHub
    常用js收藏
    ASP.NET初学者常用知识
    ASP.NET页面刷新方法总结
    C#中抽象类和接口的区别
    GridView 72般绝技
    55种网页常用小技巧
  • 原文地址:https://www.cnblogs.com/cyh123/p/3203898.html
Copyright © 2020-2023  润新知