开发者社区> 吞吞吐吐的> 正文

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>
复制代码

 

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

遇到这种情况我们发现

代码里已经把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");

 本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/3622410.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
后端入门---Servlet乱码问题的解决
后端入门---Servlet乱码问题的解决
19 0
Servlet中request、response乱码问题完美解决
Servlet中request、response乱码问题完美解决
46 0
Java Web(二) Servlet中response、request乱码问题解决
三月不减肥,五月徒伤悲,这就是我现在的状态,哈哈~ 健身、博客坚持。
103 0
Servlet中response、request乱码问题解决
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34173549/article/details/80097763 一、r...
1096 0
Servlet响应乱码问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36367789/article/details/54881100 response.
590 0
Web对数据库的增删改查(servlet+jsp+javaBean增删改查)
Web+Java对数据库增删改查-javaWeb中级
339 0
Servlet_输出流jsp注意事项
订阅专栏 Servlet输出流两种方法以及注意事项 HTTP 响应码 以及 各自对应解释 关于 Web API 技术标准的开发文档网站(https://developer.mozilla.org)
55 0
基于JSP&Servlet实现的众筹平台系统
基于JSP&Servlet实现的众筹平台系统
50 0
基于JSP/SERVLET学生管理系统
基于JSP/SERVLET学生管理系统
77 0
KS003基于JSP和Servlet实现的商城系统
KS003基于JSP和Servlet实现的商城系统
95 0
使用JSP/SERVLET实现在校学生管理系统
使用JSP/SERVLET实现在校学生管理系统
58 0
基于JSP/SERVLET的省心物流管理
基于JSP/SERVLET的省心物流管理
41 0
使用最新版IDEA(21.3.2)创建一个最小的JAVAWEB应用(JSP,Servlet运行方法)
1.IDEA内创建一个基于Tomcat的项目 首先新建一个普通的项目
69 0
+关注
吞吞吐吐的
文章
问答
视频
相关课程
更多
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载