zoukankan      html  css  js  c++  java
  • PrintWriter out = response.getWriter();乱码解决

             resopnse  request的乱码问题

    今天在改项目时,发现这个简单又容易忽视在问题。说起这个问题,比较简单,但也比较容易忽视。下面就具体讲讲这个问什么会出现乱码问题。

    request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码;
     
    response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码;

    乱码产生的原因:不管是request乱码还是response乱码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的。以request乱码为例:浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先将请求参数(字符)转换成字节,换成二进制的格式,服务器接收到请求参数后进行解码(字节转字符),然后封装到request对象中。如果客户端的编码与服务器端的解码不统一,就会导致通过request获取到的请求参数的值是乱码。   总之一句话,就是,客户端和服务器编码不一致所造成的,。

    解决:
    一、response乱码

    服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集进行解码后显示,如果浏览器的默认解码字符集不是ISO-8859-1,就出现乱码。
    1.设置服务器端的编码
    response.setCharacterEncoding("utf-8”);
    默认是ISO-8859-1;该方法必须在response.getWriter()之前进行设置
    2.
    response.setContentType("text/html;charset=utf-8”);
    等同于response.setHeader("contentType", "text/html;charset=utf-8”);它其实会覆盖response.setCharacterEncoding("utf-8”)
    一、request乱码

    从浏览器发起的访问方式有三种:在地址栏直接输入URL访问、点击页面中的超链接访问、提交表单访问,

    所以对于request乱码,只需要在服务器端设置相应的解码格式即可

    post

    1.表单提交request.setCharacterEncoding("utf-8”)

    2.get

    在在tomcat的server.xml中,设置元素的属性URIEncoding="UTF-8”,注意:1、设置元素的属性useBodyEncodingForURI=“true”,意思是请求体和uri使用相同的编码格式。通过设置这两个属性,既可以解决get方式的乱码,又可以解决

    post方式的乱码。
    另外注意在所有页面都采用同一编码,例如(都是gbk或者都是utf-8)这样,避免出现页面乱码问题。
  • 相关阅读:
    函数的调用过程
    Android基础-弹出式菜单
    Android基础-上下文菜单(Content_Menu)
    Adnroid基础-选项菜单(OptionMenu)
    Android基础-UI界面(项目实战 点菜界面) 1.EditText 2.SeekBar 3.CheckBox 4.ToggleButton 5.RadioGroup 6.Button 7.TextView 8.ImageView
    Android基础-进度条(SeekBar)
    Android基础-开关按钮(ToggleButton)
    Android基础-单选框(RadioButton)
    显示应用名称
    在Xcode中使用pch文件
  • 原文地址:https://www.cnblogs.com/taiyanhong/p/7510015.html
Copyright © 2011-2022 走看看