我在request篇和response都有提到,觉得会忘记,所以从新整理一下

request细节四----->通过request控制编码问题

第一种方式是通过设置------>request.setCharacterEncoding("UTF-8")和URLEncoder.encode(username, "UTF-8");//只有post生效

第二种方式是通过设置------>(post,get通用的情况)

String username=new String(request.getParameter("username").getBytes("iso8859-1"),"UTF-8");//反向查找,get/post都可以

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// request.setCharacterEncoding("UTF-8");//只有post生效
String username=new String(request.getParameter("username").getBytes("iso8859-1"),"UTF-8");
//反向查找,get/post都可以
//URLEncoder.encode(username, "UTF-8");
System.out.println(username);
}

在浏览器头设置好如下

<meta charset="UTF-8">

图片是原理:

第三种方式是通过设置------>在uri里带参数的情况,可以在tomcat server.xml里配置

第四种方式是通过设置------>(post,get通用的情况)

首先servlet里配置:

然后:server.xml里配置:

以上是request编码解决办法,然后来讲下response中乱码解决:

HttpServletResponse细节一-------》码表的对应设置

原理图:

浏览器读出涓球理由:浏览器默认国标码表读,不是utf-8

字节流解决办法--->控制浏览器查找UTF-8码表

 private void test2(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
//用html技术中的meta标签模拟http响应头,来控制浏览器的行为
String data="中国";
OutputStream out=response.getOutputStream(); out.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());
out.write(data.getBytes("UTF-8"));
} private void test1(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
//以什么编码发就用什么编码读
response.setHeader("Content-type","text/html;charset=UTF-8");
String data="中国";
OutputStream out=response.getOutputStream();
out.write(data.getBytes("UTF-8"));
}

字符流发生问题:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    String data="中国";
PrintWriter out=response.getWriter();
out.write(data);
}

先把中国写入respone,因为respone是外国人发明的,查找的是iso8859这个码表,查找不到所以显示??

字符流解决办法--->改变所查码表和浏览器所读取时查询码表

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// response.setCharacterEncoding("UTF-8");//控制写入response时所查询的码表
// response.setHeader("content-type", "text/html;charset=UTF-8");//控制浏览器输出时时所查询的码表
response.setContentType("text/html;charset=UTF-8");//这句话可以代替上两句话
String data="中国";
PrintWriter out=response.getWriter();
out.write(data);//writer流只能写字符串!
}

成功:

Servlet------>request和response控制编码乱码问题的更多相关文章

  1. servlet request、response的中文乱码问题

    一.request 1.get请求 get请求的参数是在请求行中的,浏览器使用utf-8进行编码,数据的编码一般为UTF-8,而url请求行的默认编码为ISO-8859-1,一般来说有以下方式可以解决 ...

  2. request和response的中文乱码问题

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

  3. GET请求和POST请求的request和response的中文乱码问题

    GET请求(request)中文乱码解决方案: 在Services的server.xml的配置文件的第一个Connector标签中添加属性URIEncoding="UTF-8" P ...

  4. 关于request和response的中文乱码问题

    相信大家在开发Web项目中都会遇到中文的请求乱码和响应乱码的情况,现在给大家梳理一下并提供解决方案. 1.为什么会出现乱码: 出现乱码的根本原因是浏览器和服务器的解码方式不一致引起的.所以我们统一编码 ...

  5. C#request和response的中文乱码问题

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

  6. Web jsp开发学习——终极解决jsp中request和response中文乱码的问题(加个过滤器)

    中文乱码真的很烦人的.而且每次都要写,可麻烦了,而且有时候写了还不一定管用,所以我们可以试试过滤器 1.每个jsp头上当然要写上utf8啦 <%@ page language="jav ...

  7. Requset和Response中的乱码问题

    在我们的日常开发中,乱码问题,还是比较经常遇到的,有时候是浏览器端提交的数据到后台乱码了,有时候是后台响应的数据到前台浏览器端展现出现乱码了.下面我们将通过几个简单的例子来说明乱码的由来和解决方式. ...

  8. Response ServletContext 中文乱码 Request 编码 请求行 共享数据 转发重定向

    Day35  Response 1.1.1 ServletContext概念 u 项目的管理者(上下文对象),服务器启动时,会为每一个项目创建一个对应的ServletContext对象. 1.1.2  ...

  9. servlet中request和response

    一.HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象 ...

随机推荐

  1. e657. 用直线和曲线绘制图形

    GeneralPath shape = new GeneralPath(); shape.moveTo(x, y); shape.lineTo(x, y); shape.quadTo(controlP ...

  2. php header函数下载文件实现代码

    在php中header函数的使用很大,header不但可以向客户端发送原始的 HTTP 报头信息,同时还可以直接实现文件下载操作 header函数最常用的不是用于下载而是用于发送http类的 跳转 它 ...

  3. par函数的las参数-控制x轴和y轴标签的方向

    las 参数控制x轴和y轴的刻度线上的标签与两条轴的防线,可选值为0,1,2,3 0为默认值,代表始终与刻度线平行,代码示例: par(las = 0) plot(1:5, 1:5, main = & ...

  4. samtools faidx 命令处理fasta序列

    samtools faidx 能够对fasta 序列建立一个后缀为.fai 的文件,根据这个.fai 文件和原始的fastsa文件, 能够快速的提取任意区域的序列 用法: samtools faidx ...

  5. RSQLite 操作sqlite数据库

    RSQLite 可以在R中方便的创建sqlite数据库,并进行检索, 这个R包依赖于DBI包 github 上的地址:https://github.com/rstats-db/RSQLite gith ...

  6. 深入浅出Redis-redis哨兵集群[转]

    1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所 ...

  7. shiro缓存

    shiro的可以权限控制内容包括:URL地址.Web页面的元素.以及方法,即shiro对用户权限的控制是细粒度的.从用户的一次访问来说,他可能需要最多经过三种.多次的验证.这里的多次怎么说呢?如果说W ...

  8. C语言中,为什么字符串可以赋值给字符指针变量

    转载于:http://www.cnblogs.com/KingOfFreedom/archive/2012/12/07/2807223.html 本文是通过几篇转帖的文章整理而成的,内容稍有修改: 一 ...

  9. [ExtJs] ExtJs4.2 数据模型Ext.data.Model学习

    Model代表应用程序管理的一些对象.例如,我们可能会为 我们想在系统中建模的现实世界中的一些物体像使用者.产品和汽车等定义一个Model.这些Model在 Ext.ModelManager中注册,被 ...

  10. simple fix 主从不一致滴error

    Last_SQL_Error: Error 'Unknown table 'bb'' on query. Default database: 'test'. Query: 'DROP TABLE `b ...