我在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. 用C语言实现解析简单配置文件的小工具

    本文介绍作者写的一个小工具,简单的代码中包含了C语言对字符串的处理技巧,对文本文件的简单解析,二进制文件的数据复制的方法,以及格式化输出文本文件的示例. 工具的输入是如下内容的配置文件: ;资源管理器 ...

  2. ffmpeg 编解码详细过程

    ffmpeg编解码详细过程     bobbypollo 转:ffmpeg编解码详细过程 原文地址:ffmpeg编解码详细过程(转)作者:心在飞翔原文出处: http://www.360doc.com ...

  3. socket client简单传输数据

    1.整数转换为用于TCP传输的二进制 _host = "127.0.0.1" _port = 5678 _address = (_host, _port) s=socket.soc ...

  4. 利用KEGG的API获取基因对应的pathway 信息

    KEGG 官网提供了API, 可以方便的访问KEGG 数据库中的内容,链接如下: http://www.kegg.jp/kegg/rest/keggapi.html 利用API可以得到某一个基因参与的 ...

  5. oracle最精简客户端(3个文件+1个path变量就搞定oracle客户端)

    oracle最精简客户端: network\admin\tnsnames.ora (自己新建)oci.dlloraocieill.dll 将oci.dll的路径加到path变量中就可以了 tnsnam ...

  6. NHibernate初学五之关联一对多关系

    1:创建两张表T_Country.T_Person:其中T_Person表中有一个CountryID对应T_Country的ID,一个Country可以对应多个Person CREATE TABLE ...

  7. python2.0_s12_day21_web聊天室一

    本节内容: 项目实战:开发一个WEB聊天室 功能需求: 用户可以与好友一对一聊天 可以搜索.添加某人为好友 用户可以搜索和添加群 每个群有管理员可以审批用户的加群请求,群管理员可以用多个,群管理员可以 ...

  8. oracle中获取执行计划

    1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加expla ...

  9. 在linux中添加环境变量

    首先用命令查看配置了哪些环境变量 env命令查看 编辑环境变量命令  vim ~/.bash_profile Counter_HOME=/home/test/Counterexport Counter ...

  10. cmp()

    cmp(x, y) 用于比较两个对象的大小,如果 x > y 返回 1 ,如果 x = y 返回 0 ,如果 x < y 返回 -1 In [23]: cmp(5, 2) Out[23]: ...