在学习时servlet乱码问题还是挺严重的,总结一下有三种情况

1.新建HTML页面后浏览出现乱码

2.以post形式请求时出现乱码

3.以get形式请求时出现乱码

让我们一个一个来解决吧

1.新建HTML页面后浏览出现乱码

<!DOCTYPE html>
<html>
<head>
<title>乱码示例</title> <meta name="keywords" content="keyword1,keyword2,keyword3">
<meta name="description" content="this is my page">
<meta name="Content-Type"content="text/html;charset=utf-8">
</head> <body>
Post示例 <br>
<form action="/EnocodingDemo/GetEncodingPage" method="post">
<label>信息:</label><input type="text" name="info"><br/>
<label>提交:</label> <input type="submit" value="提交">
</form> </body>
</html>

我们新建一个网页后添加一些信息,用浏览器打开后发现会有乱码

遇到这种情况我们发现

代码里已经把charset设置成了utf-8了

<meta name="Content-Type"content="text/html;charset=utf-8">

但为什么不对呢?答案是它把标记用错了不应该用name要用http-equiv

把它修改成这样

<meta http-equiv="Content-Type"content="text/html;charset=utf-8">

重新reload一下,用ie打开

这里要及一下基础

name 属性提供了名称/值对中的名称。HTML 和 XHTML 标签都没有指定任何预先定义的 <meta> 名称。通常情况下,您可以自由使用对自己和源文档的读者来说富有意义的名称。
"keywords" 是一个经常被用到的名称。它为文档定义了一组关键字。某些搜索引擎在遇到这些关键字时,会用这些关键字对文档进行分类。

http-equiv 属性为名称/值对提供了名称。并指示服务器在发送实际的文档之前先在要传送给浏览器的 MIME 文档头部包含名称/值对。
当服务器向浏览器发送文档时,会先发送许多名称/值对。虽然有些服务器会发送许多这种名称/值对,但是所有服务器都至少要发送一个:content-type:text/html。这将告诉浏览器准备接受一个 HTML 文档。

它俩常用的名称为

详细请自己阅读 http://www.w3school.com.cn/tags/tag_meta.asp

2.以post形式请求时出现乱码

我们2.以post形式请求时出现乱码就用上面的HTML页面新建一个

新建一个servlet   MyEncodingPage

POST请求的数据时作为请求体的一部分传递给服务器的,只要修改请求内的编码就可以。

request.setCharacterEncoding("UTF-8");

详细代码

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
request.setCharacterEncoding("UTF-8");
String info = request.getParameter("info");
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.println("<h1>Hello</h1>");
out.println("info = "+info);
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}

3.以get形式请求时出现乱码

在地址栏输入默认是gbk,而get传参数是要先编码为iso8859-1再传的,所以要先用iso-8859-1来解码,再用utf-8编码为一个新字符串

String str= new String(request.getParameter("name").getBytes("ISO-8859-1"), "UTF-8");

servlet乱码问题总结的更多相关文章

  1. MyEclipse +Servlet 乱码

    用MyEclipse 新建了Web Project,然后建立了一个Servlet,在doGet方法中谢了简单的一句欢迎语句,本来以为平平常常的事情,但是却出错了,乱码问题,在网上找了一些帖子,说是设置 ...

  2. servlet 乱码解决方法

    一. servlet 发送的html 页面中文乱码 解决方法, 1.加入如下代码 response.setCharacterEncoding("UTF-8"); 2.在html页面 ...

  3. Servlet乱码问题

    数据像水流一样从一个地方流向另一个地方. 文本流是特殊的二进制流. 既然提到乱码问题,那就必然是用错误的编码去解释二进制流. 在传输过程中必然都是以二进制流传输的. 所以,我们需要考虑的是: 有几个数 ...

  4. tomcat8 到idea控制台和servlet乱码问题

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1.问题重现 ​ Tomcat8 部署到idea上时候,控制台出现的乱码 如图,本来框出来的是乱码 其中,"测试"这个是在serv ...

  5. Servlet乱码问题解决

    对于请求参数的编码处理基本上分为get和post两种情况. 1.POST index.html <!DOCTYPE html> <head> <meta http-equ ...

  6. Servlet乱码

      request.setCharacterEncoding():是设置从request中取得的值或从数据库中取出的值 (只管post方式提交的问题///get需在server.xml中的: < ...

  7. servlet乱码以及解决

    //  浏览器提交的数据是000110011(码表中对应的<编码> )等东西. // 浏览器以什么<码表>打开浏览器(而空中浏览器使用的编码是:<meta http-eq ...

  8. 解决servlet乱码问题

    1) request中的中文乱码 a) POST方式提交 在获得提交表单信息之前调用request.setCharactersEncoding("UTF-8"); b) GET方式 ...

  9. Servlet乱码解决

    后端收前端 1.post乱码 可以通过 request.setCharacterEncoding("utf-8");  这样在后端可以接收中文 2.get乱码(手动解决) 可以通过 ...

随机推荐

  1. H5一二事

    先回顾一下WEB技术的几个阶段 Web 1.0 内容为主,主要流行HTML和CSS Web 2.0 动态网页,流行AJAX/JavaScript/DOM H5 时代,WEB开发回归富客户端 那么H5肯 ...

  2. mysql执行计划

         烂sql不仅直接影响sql的响应时间,更影响db的性能,导致其它正常的sql响应时间变长.如何写好sql,学会看执行计划至关重要.下面我简单讲讲mysql的执行计划,只列出了一些常见的情况, ...

  3. PHP curl https访问问题

    PHP curl https访问问题,原代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* @String url URL地址  * @Array data P ...

  4. Html5拖拽复制

    拖拽是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖拽是标准的一部分,任何元素都能够拖拽. Html5拖拽非常常见的一个功能,但是大部分拖拽的案例都是一个剪切的过程, 项目中需 ...

  5. MySQL 优化之 Linux系统层面调优

    MySQL 一般运行于Linux系统中.对于MySQL的调优一般分为Linux操作系统层面的调优和MySQL层面的调优(当然还有架构层面.业务层面.应用程序层面的调优).操作系统主要是管理和分配硬件资 ...

  6. ES6箭头函数(Arrow Functions)

    ES6可以使用“箭头”(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 1. 具有一个参数的简单函数 var single = a => a single('he ...

  7. Eclipse和PyDev搭建完美Python开发环境(Windows篇)

    目录安装Pythonpython for eclipse插件安装配置PyDev插件测试 安装Python从网站上下载最新的版本,从http://python.org/download/下载.安装过程与 ...

  8. Linux和开源已经在2013年开始悄悄主宰世界?

    提到Linux,很多人觉得它依旧不温不火,实际上在这个即将过去的一年,Linux和开源软件已经悄悄主宰了计算领域的各方面,这具体表现在开源项目遍地、Chromebook崛起、SteamOS备受瞩目、A ...

  9. aircack-ng抓握手包

    1.关闭影响进程 airmon-ng check kill 将要进入监听模式的无线网卡断开它已连接的AP 2.查看无线网卡的名字 ifconfig ,例如 wlan0 3.进入监听模式: airmon ...

  10. 虚拟机群安装多个hadoop集群时遇到的问题

    背景,原来在我的虚拟机集群(nn1,nn2)中安装的是cdh23502,后来做升级实验,升到cdh26550,因为生产中使用的环境是cdh23502,所以再次切换回去. 切换的过程中,遇到一些问题,特 ...