• Tomcat产生乱码的解决方法


    Tomcat在处理GET和POST请求时产生的乱码解决的方法有两个:

      1. 将GET请求改成POST请求,然后就可以使用request.setCharacterEncoding方法设置编码,并使用request.getParameter方法直接获得中文请求参数了。
      2. 不用改GET请求,在Servlet中使用如下的代码来得到中文请求参数。
      String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GBK");
       综上所述,如果使用了GET请求,则setCharacterEncoding方法不起作用,只能使用上面的代码来解决,而使用POST请求,尽管 setCharacterEncoding方法起作用,但使用上面的代码仍然好使(在这时不能使用setCharacterEncoding方法将编码格 式设置成非iso-8859-1格式)。因此,如果想让Servlet可以同时处理GET和POST请求中的中文信息,除了判断这两种方法外,还可以使用 上面的代码来同时处理这两种请求的中文信息。
      考试大建议使用如下的代码来获得中文请求参数:BB霜的好处有哪些?
      String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "GBK");
      因为上面的代码是利用了Java的编码能力,对于所有的Web服务器都会有效,而setCharacterEncoding方法是通过Web服务器支持的,并不是所有的Web服务器都会对该方法有很好的支持。 

    request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值。
        指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码。值得注意的是在执行 setCharacterEncoding()之前,不能执行任何getParameter()。而且,该指定只对POST方法有效,对GET方法无效。 分析原因,应该是在执行第一个getParameter()的时候,java将会按照编码分析所有的提交内容,而后续的getParameter()不再 进行分析,所以setCharacterEncoding()无效。而对于GET方法提交表单是,提交的内容在URL中,一开始就已经按照编码分析提交内 容,setCharacterEncoding()自然就无效。
    get需在Tomcat的server.xml中的:
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
    URIEncoding="GBK" />
    )加入URIEncoding="GBK",解决get请求乱码问题
        response.setContentType("text/html;charset=gb2312")是设置页面中为中文编码。
        前者是设置动态文字(参数,数据库),后者设置页面静态文字有什么美白的简单面膜吗?
    response.setContentType指定 HTTP 响应的编码,同时指定了浏览器显示的编码. 
    response.setCharacterEncoding设置HTTP 响应的编码,如果之前使用response.setContentType设置了编码格式,则使用 response.setCharacterEncoding指定的编码格式覆盖之前的设置.与response.setContentType相同的 是,调用此方法,必须在getWriter执行之前或者response被提交之前.
  • 相关阅读:
    【原创游戏】合金弹头S——Unity制作的同人游戏
    【原创游戏】Extreme Ball——虐心小游戏
    【原创游戏】迷踪失路——恐怖风格的第一人称迷宫游戏
    生成二维码工具类及使用
    使用base64对图片的加密解密
    将图片转换成二进制, (用到 输入流,输出流)
    图片的缩放(放大缩小)
    逻辑推理
    应该在别人恐惧时贪婪吗?
    SQL 2005数据类型说明
  • 原文地址:https://www.cnblogs.com/sky7034/p/2171549.html
Copyright © 2020-2023  润新知