1 说明
乱码问题:
  • 获取请求参数中的乱码问题;

    • POST请求:request.setCharacterEncoding(“utf-8”);
    • GET请求:new String(request.getParameter(“xxx”).getBytes(“iso-8859-1”), “utf-8”);
      • Tomcat 8.5.20、Tomcat 9.0.0.M26 默认编码都是utf-8,所有不出现GET请求乱码问题,所以不需处理
  • 响应的乱码问题:response.setContextType(“text/html;charset=utf-8”)。
2、当GET请求出现乱码问题时(默认编码为ISO-8859-1时),可采用以下方法解决:
 1 package web.filter;
2
3 import javax.servlet.*;
4 import javax.servlet.annotation.WebFilter;
5 import javax.servlet.http.HttpServletRequest;
6 import java.io.IOException;
7
8 @WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
9 public class EncodingFilter implements Filter {
10 public void destroy() { }
11 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
12 //处理post请求编码问题
13 req.setCharacterEncoding("utf-8");
14
15 HttpServletRequest request = (HttpServletRequest) req;
16 //处理get请求的编码问题
17 if ( request.getMethod().equals("GET")){
18 EncodingRequest er = new EncodingRequest(request);
19 chain.doFilter(er, resp);
20 } else {
21 chain.doFilter(req,resp);
22 }
23 }
24 public void init(FilterConfig config) throws ServletException { }
25 }
 1 package web.filter;
2
3 import javax.servlet.http.*;
4 import java.io.UnsupportedEncodingException;
5
6 /**
7 * 装饰request
8 */
9 public class EncodingRequest extends HttpServletRequestWrapper{
10 private HttpServletRequest request ;
11 public EncodingRequest(HttpServletRequest req) {
12 super(req);
13 this.request = req;
14 }
15 public String getParameter(String s) {
16 String value = request.getParameter("s");
17 //处理编码问题
18 try {
19 value = new String(value.getBytes("iso-8859-1"),"utf-8");
20 } catch (UnsupportedEncodingException e) {
21 throw new RuntimeException(e);
22 }
23 return value;
24 }
25 }
 1 package web.servlet;
2
3 import javax.servlet.ServletException;
4 import javax.servlet.annotation.WebServlet;
5 import javax.servlet.http.HttpServlet;
6 import javax.servlet.http.HttpServletRequest;
7 import javax.servlet.http.HttpServletResponse;
8 import java.io.IOException;
9
10 @WebServlet(name = "AServlet",urlPatterns = "/AServlet")
11 public class AServlet extends HttpServlet {
12 protected void doPost(HttpServletRequest request, HttpServletResponse response)
13 throws ServletException, IOException {
14 response.setContentType("text/html;charset=utf-8");
15 String username = request.getParameter("username");
16 response.getWriter().println(username);
17 }
18
19 protected void doGet(HttpServletRequest request, HttpServletResponse response)
20 throws ServletException, IOException {
21 response.setContentType("text/html;charset=utf-8");
22 String username = request.getParameter("username");
23 response.getWriter().println(username);
24 }
25 }
 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3 <html>
4 <head>
5 <title>$Title$</title>
6 </head>
7 <body>
8 <a href="<c:url value='/AServlet?username=张三'/>">点击这里</a>
9 <form action="<c:url value='/AServlet'/> " method="post">
10 用户名:<input type="text" name="username" value="李四"/>
11 <input type="submit" value="提交"/>
12 </form>
13 </body>
14 </html>

3、当只有POST请求出现乱码问题时(服务器默认编码为UTF-8时),可采用以下方法解决:

 1 @WebFilter(filterName = "EncodingFilter",urlPatterns = "/*")
2 public class EncodingFilter implements Filter {
3 public void destroy() { }
4 public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
5 //处理post请求编码问题
6 req.setCharacterEncoding("utf-8");
7 chain.doFilter(req,resp);
8 }
9 public void init(FilterConfig config) throws ServletException {}
10 }
 1 @WebServlet(name = "AServlet",urlPatterns = "/AServlet")
2 public class AServlet extends HttpServlet {
3 protected void doPost(HttpServletRequest request, HttpServletResponse response)
4 throws ServletException, IOException {
5 response.setContentType("text/html;charset=utf-8");
6 String username = request.getParameter("username");
7 response.getWriter().println(username);
8 }
9
10 protected void doGet(HttpServletRequest request, HttpServletResponse response)
11 throws ServletException, IOException {
12 response.setContentType("text/html;charset=utf-8");
13 String username = request.getParameter("username");
14 response.getWriter().println(username);
15 }
16 }

解决全站字符乱码(POST和GET中文编码问题)的更多相关文章

  1. Java_Web学习笔记_过滤器应用案例(解决全站字符乱码)

    解决全站字符乱码(POST和GET中文编码问题) servlet: l  POST:request.setCharacterEncoding(“utf-8”); l  GET: String user ...

  2. 04_过滤器Filter_05_Filter解决全站中文乱码问题(POST方式)

    [工程截图] [web.xml] <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns: ...

  3. mysql字符乱码

    解决mysql字符乱码思路: mysql服务器字符集 mysql客户端字符集 系统字符集 生产环境改字符集: 1.导出表结构到 scam.sql文件中 2.更改scam.sql文件中的字符集为想要的字 ...

  4. 【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)

      http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [已解决]python中文字符乱码(GB2312,GB ...

  5. 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码

    MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...

  6. 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!

    在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...

  7. hive中文字符乱码 解决方法【转】

    一.个人初始开发环境的基本情况以及Hive元数据库说明 ①hive的元数据库改成了mysql(安装完mysql之后也没有进行其它别的设置) ②hive-site.xml中设置元数据库对应的配置为  j ...

  8. JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)

    JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...

  9. 彻底解决mysql中文乱码的办法 ???

      MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...

随机推荐

  1. [CSS3] 各种角度的三角形绘制

    #triangle-up { width:; height:; border-left: 50px solid transparent; border-right: 50px solid transp ...

  2. trunc 函数用法

    转载至:http://blog.csdn.net/aqszhuaihuai/article/details/6303686 1.trunc用于日期,可精确到年,月和日. select trunc(sy ...

  3. 自适应大邻域搜索代码系列之(1) - 使用ALNS代码框架求解TSP问题

    前言 上次出了邻域搜索的各种概念科普,尤其是LNS和ALNS的具体过程更是描述得一清二楚.不知道你萌都懂了吗?小编相信大家早就get到啦.不过有个别不愿意透露姓名的热心网友表示上次没有代码,遂不过瘾啊 ...

  4. CSS--浮动(float)布局

    浮动概述:浮动,指的是元素标签使用float属性.应用float属性的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止.浮动的本质是让文字围绕图片,但现在很多时候使用浮动进行布局 ...

  5. /proc/xxx/maps简要记录

    定位内存泄漏基本上是从宏观到微观,进而定位到代码位置. 从/proc/meminfo可以看到整个系统内存消耗情况,使用top可以看到每个进程的VIRT(虚拟内存)和RES(实际占用内存),基本上就可以 ...

  6. 调用ajax的返回值,需要再ajax之外的函数体里return,以及同步异步问题

    <html> <head> <meta charset="utf-8"/> <script src="js/jquery-1.1 ...

  7. 基础概念——何为GNU与GCC

    GNU:GNU 是一个自由软件操作系统.全称是GNU‘s Not Unix. GNU 是一款类似Unix的操作系统,它所采用的的典型内核是Linux. 该组合叫作GNU/Linux操作系统: GNU网 ...

  8. swagger注释API详细说明

    API详细说明 注释汇总 @RequestMapping此注解的推荐配置 value method produces 示例: @ApiOperation("信息软删除") @Api ...

  9. Mac 10.12安装hosts快速切换工SwitchHosts!

    说明:支持在线本地. 下载: (链接: https://pan.baidu.com/s/1boDw67d 密码: uy6g)

  10. (转)Heartbeat+DRBD+MySQL高可用方案

    原文:http://www.cnblogs.com/gomysql/p/3674030.html 1.方案简介 本方案采用Heartbeat双机热备软件来保证数据库的高稳定性和连续性,数据的一致性由D ...