当前位置: 首页 >服务端 > servlet乱码问题总结

servlet乱码问题总结

在学习时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>

 

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

servlet乱码问题总结 _ JavaClub全栈架构师技术笔记

遇到这种情况我们发现

代码里已经把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打开

servlet乱码问题总结 _ JavaClub全栈架构师技术笔记

这里要及一下基础


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

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

它俩常用的名称为

servlet乱码问题总结 _ JavaClub全栈架构师技术笔记

详细请自己阅读 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");

 

作者:li-peng
来源链接:https://www.cnblogs.com/li-peng/p/3622410.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/113236.html

标签:Servlet
分享给朋友:

“servlet乱码问题总结” 的相关文章