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)这样,避免出现页面乱码问题。

PrintWriter out = response.getWriter();乱码解决的更多相关文章

  1. 使用PrintWriter out=response.getWriter();输出script脚本时乱码解决

    使用PrintWriter out=response.getWriter();输出script脚本时乱码解决 最近遇到了一个奇怪的事情,仅仅用out.print("<script ty ...

  2. PrintWriter out = response.getWriter() 输出中文乱码问题

    HttpServletResponse response = ServletActionContext.getResponse();        response.setCharacterEncod ...

  3. response对象乱码--解决

    中文乱码 响应对象中文乱码,即就是response对象乱码. response对象输出中文数据乱码解决方案: 1 字节流输出响应乱码. 该情况不一定乱码.但是解决乱码的步骤是: 1) 设置浏览器打开文 ...

  4. springMVC @response 中文乱码解决

    以下任选一种 在web.xml中: 添加一个过滤器(filter),注册 org.springframework.web.filter.CharacterEncodingFilter <filt ...

  5. Servlet的PrintWriter out = response.getWriter()使用

    一直以来,只知道out可以向客户端浏览器页面输入数据(html.txt等类型),今天在和php程序联调时发现自己的理解出现了偏差. out是输出字符流,即servlet接受到request请求后,se ...

  6. 关于 getWriter() has already been called for this response 的错误解决办法

    java.lang.IllegalStateException: getWriter() has already been called for this response 今天在做显示图片的时候,( ...

  7. ajax乱码解决汇总

    ajax乱码解决总结第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的,第二,utf-8是每个汉字(unicode字符)用3个字节来存储.第三,用utf-8 ...

  8. Web运行控制台输出乱码解决总结

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. ajax乱码解决总结

    第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的,第二,utf-8是每个汉字(unicode字符)用3个字节来存储.第三,用utf-8来send数据是不会 ...

随机推荐

  1. list模板题

    题面: 设计一个int类型的动态链表L,L中有一个代表当前位置的光标,支持下列操作: insert(x): 在光标前面插入元素x,插入后光标指向新插入的元素x move(d): 如果d为正数,则光标向 ...

  2. python面向对象编程小程序- 选课系统

    选课系统 花了一晚上写的,可能还存在不足 1.程序框架 2.文件夹建立 D:/选课系统 |___api | |___common_api.py |___bil | |___common.py |___ ...

  3. Appium+python自动化(二十二)- 三个臭皮匠顶个诸葛亮-控件坐标获取(超详解)

    简介 有些小伙伴或者是童鞋可能会好奇会问上一篇中的那个monkey脚本里的坐标点是如何获取的,不是自己随便蒙的猜的,或者是自己用目光或者是尺子量出来的吧,答案当然是:NO.获取控件坐标点的方式这里宏哥 ...

  4. C#7.0 新增功能

    连载目录    [已更新最新开发文章,点击查看详细] C# 7.0 向 C# 语言添加了许多新功能 01 out 变量 支持 out 参数的现有语法已在此版本中得到改进. 现在可以在方法调用的参数列表 ...

  5. Catalan公式

    f(n)=f(1)*f(n-1)+f(2)*f(n-2)+f(3)*f(n-3)+......+f(n-1)*f(1) 例用:一个长度为n的无重复序列入栈的所有出栈方式

  6. [leetcode] 120. Triangle (Medium)

    原题 思路: dp,从下往上依次取得最小的,取到最上面的,就是一条最小的路径. class Solution { public: int minimumTotal(vector<vector&l ...

  7. spark 源码分析之十一--Spark RPC剖析之TransportClient、TransportServer剖析

    TransportClient类说明 先来看,官方文档给出的说明: Client for fetching consecutive chunks of a pre-negotiated stream. ...

  8. springboot的邮件服务

    作者:纯洁的微笑出处:http://www.ityouknow.com/ 版权归作者所有,转载请注明出处 springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEA ...

  9. Redis的HelloWorld

    1.安装完成的Redis: linux安装的应用默认会在:usr/local/bin. 1.redis-benchmark:性能测试工具,是redis提供的一个高并发程序,可以在自己本机运行,看看自己 ...

  10. 初识Apache NiFi

    一. NiFi介绍 Apache NiFi支持功能强大且可扩展的数据路由,转换和系统中介逻辑的有向图. Apache NiFi的一些高级功能和目标包括: 基于Web的用户界面 设计,控制,反馈和监控之 ...