解决全站字符乱码(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 ...
随机推荐
- centos networkmanager 和 network配置冲突
1.由于NetworkManager与 network 有冲突,所以要把NetworkManager关掉
- [转载] cassandra Unable to complete request: one or more nodes were unavailable
今天碰到的问题跟这个一模一样,特地转过来记录一下 https://support.datastax.com/hc/en-us/articles/204893189-CQL-query-results- ...
- 读取图片信息(exif),使用com.drew.metadata.Metadata
---恢复内容开始--- 最近在开发中用到了metadata-extractor-xxx.jar 和 xmpcore-xxx.jar这个玩意, 索性查阅大量文章了解学习,来分享分享.本身工作也是经常和 ...
- 关闭tomcat端口号
一. CentOS 关闭tomcat端口号 1. 首先保证liunx下 ps -ef | grep java 2. 会显示如下信息 我使用的是IDEA打包的war包.tomcat是自带的 3. 查看未 ...
- python有哪些比较隐藏的知识点?
一.复用小整数以及小字符串 在Python语言中,设计者在优化Python语言时,为了提高Python的运行效率,所以就将一些小整数保存在系统表,没有释放回收(正常情况下,当Python中一个对象没有 ...
- 40.oracle事务
一.事务特性 事务必须具备以下四个特性,简称ACID属性 原子性(Atomicity):事务是一个完整的操作.事务的各步操作是不可分割的(原子的):要么都执行,要么都不执行场景:银行转账 A-100 ...
- Linux 线程调度策略与线程优先级
Linux内核的三种调度策略 SCHED_OTHER 分时调度策略. 它是默认的线程分时调度策略,所有的线程的优先级别都是0,线程的调度是通过分时来完成的.简单地说,如果系统使用这种调度策略,程序将无 ...
- 内核诊断(1)interrupt took too long
The linux kernel gathers samples using 'perf' performance monitor without affecting the latencies. T ...
- 搭建类似生产环境的RAC
install the necessary packages yum install -y 创建组.用户和目录 创建用户组 groupadd -g 2000 oinstallgroupadd -g 2 ...
- Wrapper配置详解及高级应用(转)
转自:http://286.iteye.com/blog/1921414 将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂,甚至可以认为非常简单.但是实际项目应用过程中 ...