解决全站字符乱码(POST和GET中文编码问题)
- 获取请求参数中的乱码问题;
- 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”)。
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中文编码问题)的更多相关文章
- Java_Web学习笔记_过滤器应用案例(解决全站字符乱码)
解决全站字符乱码(POST和GET中文编码问题) servlet: l POST:request.setCharacterEncoding(“utf-8”); l GET: String user ...
- 04_过滤器Filter_05_Filter解决全站中文乱码问题(POST方式)
[工程截图] [web.xml] <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns: ...
- mysql字符乱码
解决mysql字符乱码思路: mysql服务器字符集 mysql客户端字符集 系统字符集 生产环境改字符集: 1.导出表结构到 scam.sql文件中 2.更改scam.sql文件中的字符集为想要的字 ...
- 【已解决】python中文字符乱码(GB2312,GBK,GB18030相关的问题)
http://againinput4.blog.163.com/blog/static/1727994912011111011432810/ [已解决]python中文字符乱码(GB2312,GB ...
- 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如server字符编码还停留在latin12.table的语系设定问题(包含character与collation)3.客 ...
- 如何彻底解决MySQL更改默认字符集以及字符乱码问题!!!
在我们使用MySQL数据库时,字符乱码,对我们来说是一个很头疼的问题.今天笔者就来教大家如何彻底解决更改默认字符集以及字符乱码问题. 当我们使用压缩包进行MySQL安装后,系统会使用默认的字符集,这时 ...
- hive中文字符乱码 解决方法【转】
一.个人初始开发环境的基本情况以及Hive元数据库说明 ①hive的元数据库改成了mysql(安装完mysql之后也没有进行其它别的设置) ②hive-site.xml中设置元数据库对应的配置为 j ...
- JAVA and JAVA WEB with TOMCAT and ECLIPSE 学习过程中遇到的字符乱码问题及解决方法汇总(随时补充)
JAVA语言具有跨平台,unicode字符集编码的特点. 但是在开发过程中处理数据时涉及到的字符编码问题零零散散,尤其是处理中文字符时一不留神就可能出现一堆奇奇怪怪的符号,俗称乱码. 对于乱码,究其原 ...
- 彻底解决mysql中文乱码的办法 ???
MySQL会出现中文乱码的原因不外乎下列几点:1.server本身设定问题,例如还停留在latin12.table的语系设定问题(包含character与collation)3.客户端程式(例如p ...
随机推荐
- Java_多线程2_线程池
线程池(pool): 线程池的作用: 1.节省资源,减少线程的数量和创建销毁线程的开销2.合理的管理线程的分配 线程池的创建: 1.newCachedThreadPool //优点:很灵活,弹性的线程 ...
- webpack+vue中安装使用vue-layer弹窗插件
1.安装vue-layer插件 npm install vue-layer --save-dev 2.打包入口文件main.js中引入vue.vue-layer.并且将vue-layer添加到vue原 ...
- HDU - 3085 Nightmare Ⅱ
HDU - 3085 Nightmare Ⅱ 双向BFS,建立两个队列,让男孩女孩一起走 鬼的位置用曼哈顿距离判断一下,如果该位置与鬼的曼哈顿距离小于等于当前轮数的两倍,则已经被鬼覆盖 #includ ...
- HEOI 十二省联考退役记
Day -1 简要的说了些注意事项 一整天都在刷树套树的水题 退役的感觉近了 Day 0 早上收拾好东西去了火车站之后 火车站居然还没有开门 等了半天 我们是从衡水到德州再到秦皇岛 到了德州之后 去车 ...
- Bootstrap-datepicker日期时间选择器的简单使用
日期时间选择器 目前,bootstrap有两种日历.datepicker和datetimepicker,后者是前者的拓展. Bootstrap日期和时间组件: 使用示例: 从左到右依次是十年视图.年视 ...
- OI中一些常见实用的套路【更新中】
数据结构 在维护树上路径时,如果只是点的独立的加减,可以考虑用括号序来维护(拆成两部分) 需要求树上很多路径中k近/距离和 一类,考虑点分治/在点分树上解决. 子树求和可以转化为DFS序上区间求和 树 ...
- 完美解决Bootstrap4 导航栏 fixed-top 后,锚点定位时遮挡问题
利用锚点改变事件\(onhashchange\),使用jQuery的\(scrollTop\)向前滚回导航栏的高度(比如我的100个像素) HTML: <body onhashchange=&q ...
- JVectorMap地图插件.Net版开源
jVectorMap地图插件只要浏览器技术JavaScript.CSS,HTML,SVG或VML就可以浏览使用,不需要Flash或其他专有的浏览 器插件.所以jVectorMap在所有现代移动浏览器上 ...
- 使用大白菜安装Windows Server 2012 r2
依照往常安装win10的习惯操作,结果发现无GUI界面.重装时注意到了两个问题: 1. 启动时有两个U盘启动选项,请选择无UEFI的模式启动: 2. 一键安装系统时,一定要点一下系统文件来源的地方,因 ...
- Array对象的判定
/* 关于JS对象类型的判断,最复杂的在于RegExp和Array了,判定RegExp的情形不较少,而Array就比较多了,下面就是判断Array的方法 */ //方法一:利用instanceof来判 ...