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. [转] 检查更新时出错:无法启动更新检查(错误代码为 4: 0x80070005 — system level)

    Google浏览器Chrome更新到时候提示错误:检查更新时出错:无法启动更新检查(错误代码为 4: 0x80070005 -- system level),很有可能是Chrome更新服务被禁用了,我 ...

  2. 2017 最新的 cocoaPods 安装方法

    经过努力终于发现了最新的 解决cocoaPods安装的办法: taobao Gems 源已停止维护,现由 ruby-china 提供镜像服务 第一步:安装rvm, 不管需不需要升级ruby,rvm可以 ...

  3. 关于npm run dev报错npm ERR! missing script: dev

    出现这个问题应当重新使用 vue init webpack 来初始化工程. 在执行 npm run dev 就可以执行了.

  4. 如何给oneindex网盘增加评论、密码查看、read me,头提示功能。

    来自我的博客:www.resource143.com 微信公众号:资源库resource 视频教程地址 点击查看 评论功能 特性 使用 GitHub 登录 支持多语言 [en, zh-CN, zh-T ...

  5. Selenium+Chrome+PhantomJS爬取淘宝美食

    搜索关键字 利用selenium驱动浏览器搜索有关键字,得到查询后的商品列表 分析页码并翻页 得到商品码数,模拟翻页,得到后续页面的商品列表 分析提取商品内容 利用PyQuery分析源码,解析得到商品 ...

  6. SASS的安装和转换为CSS的方法

    http://www.cnblogs.com/52css/archive/2012/08/19/sass-how-to-install-and-use.html SASS的安装方法: 1.先安装Rub ...

  7. Java:对象的强、软、弱和虚引用的区别

    1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK ...

  8. FS及CacheFS类解读

    Javac中有FSInfo与CacheFSInfo两个类,CacheFSInfo继承了FSInfo类,这两个类的主要功能就是通过map缓存Jar文件,核心代码如下: private Map<Fi ...

  9. 【LeetCode题解】350_两个数组的交集Ⅱ

    目录 [LeetCode题解]350_两个数组的交集Ⅱ 描述 方法一:映射 Java 实现 Python 实现 类似的 Python 实现 方法二:双指针 Java 实现 Python 实现 [Lee ...

  10. ASP.NET MVC Core的ViewComponent

    MVC Core新增了ViewComponent的概念,直接强行理解为视图组件,用于在页面上显示可重用的内容,这部分内容包括逻辑和展示内容,而且定义为组件那么其必定是可以独立存在并且是高度可重用的. ...