乱码详情
总结:讨论了使用GET和POST方法,控制台和JSP页面显示的问题。
最终发现:在servlet或者过滤器中添加:
request.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
即可解决页面显示乱码问题。
JSP页面中
<%@ page language="java"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/encodingServlet" method="get"> //选择GET或者POST提交
<input type="text" name="text" > <input type="submit"> </form> </body> </html>
过滤器页面:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//放行!!!——————————————————————
chain.doFilter(newRequest, res);
}
编写的servlet的get方法中:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String str=request.getParameter("text");
if(str!=null)System.out.println(str);
response.getWriter().write(str);
}
aaarticlea/png;base64,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" alt="" width="287" />
我们在过滤器中注释掉
//req.setCharacterEncoding("utf-8");
// res.setContentType("text/html;charset=utf-8");
|
|
控制台显示
|
JSP页面显示
|
|
GET
|
你好啊
|
???
|
|
POST
|
ä½ å¥½å
|
:浣犲ソ鍟�
|
在filte过滤器加上:request.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
|
|
控制台显示
|
JSP页面显示
|
|
GET
|
你好啊
|
你好啊 |
|
POST
|
你好啊
|
你好啊 |
这里JSP页面出现乱码是因为:在getParameter()方法中,得到的字符串是乱码的。
在Filter中:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//放行!!!——————————————————————
//
EnhanceRequest newRequest=new EnhanceRequest(req);
// req.setCharacterEncoding("utf-8");
// res.setContentType("text/html;charset=utf-8");
System.out.println("filtering");
chain.doFilter(newRequest, res);
}
使用装饰者模式,增强getParameter().
小插曲: 装饰者模式:
增强类与被增强类实现统一接口。
增强类中传入被增强的类
需要增强的方法重写。
之后在Filter中增强req:
class EnhanceRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;
public EnhanceRequest(HttpServletRequest req) {
super(req);
this.request=req;
}
//对getParameter增强
@Override
public String getParameter(String name) {
String parameter =request.getParameter(name);//乱码
try {
parameter=new String(parameter.getBytes("iso8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return parameter;
}
}
|
|
控制台显示
|
JSP页面显示
|
|
GET
|
???
|
???
|
|
POST
|
你好啊 |
???
|
同时发现:当JSP页面中去除掉这条代码contentType="text/html; charset=UTF-8",将造成JSP页面显示数据为乱码。
结论:要解决JSP页面和控制台的乱码问题,只要
在filter过滤器加上:request.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
或者就在servlet页面上添加:
request.setCharacterEncoding("utf-8");
res.setContentType("text/html;charset=utf-8");
便可解决POST和GET方法的乱码问题。
- 如何解决JSP页面显示乱码问题
一.JSP页面显示乱码 下面的显示JSP页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title& ...
- 如何彻底解决jsp页面中文乱码及数据库乱码
最近自己闲做一个小项目,搭建环境框架SSH+MySQL数据库,遇到一个问题:jsp页面中文显示乱码,数据库插入数据和更新数据时中文也显示乱码,后来在网上找了许多解决方法,还是折腾了两天才把问题解决,下 ...
- 解决JSP页面中文乱码插入到数据库的问题
在JSP页面使用表单注册一个用户名的时候,查看到数据库里面的表中文显示乱码的情况有两种: 1.JSP页面传进来的参数中文就是乱码,则是前台的问题,这个时候写一个过滤器就好了,可以写如下的一个过滤器 p ...
- jsp页面中文乱码解决方案
一.JSP页面中文乱码 在JSP页面中,中文显示乱码有两种情况:一种是HTML中的中文乱码,另一种是在JSP中动态输出的中文乱码. 先看一个JSP程序: <%@ page language=&q ...
- 怎么解决JSP中出现乱码的问题
首先我们先了解一下问题的原因.一般情况在在每个JSP页的头部都有这样一条语句: 这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-8859-1字符集存储数据. 而Java程序 ...
- jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...
- 解决JSP页面获取的数据库数据乱码问题
将java项目部署到服务器,页面数据乱码: 解决:首先查看了数据库编码和jsp编码都是utf-8,说明jsp和数据库没问题,于是查看了tomcat设置的编码 没有设置编码,于是加了URIEncodin ...
- 分享url带中文参数,打开html操作完毕跳转jsp页面中文乱码解决
1.在app端分享参数组合时不对传递的url进行任何编码. 2.打开html页面时使用 escape函数对有中文的参数进行编码 escape(GetQueryString("paramete ...
- JSP页面显示乱码
下面的显示页面(display.jsp)就出现乱码: <html> <head> <title>JSP的中文处理</title> <meta ht ...
随机推荐
- BZOJ2806:[CTSC2012]Cheat(广义SAM,二分,DP)
Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数 接下来M行的01串,表示标准作文库 接下来N行的01串,表示N篇作文 Output N行,每行一 ...
- 1191. [HNOI2006]超级英雄【二分图】
Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的 多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确 ...
- ElasticSearch 获取es信息以及索引操作
检查集群的健康情况 GET /_cat/health?v green:每个索引的primary shard和replica shard都是active状态的yellow:每个索引的primary sh ...
- virtualbox+vagrant学习-2(command cli)-11-vagrant PowerShell命令
PowerShell 格式: vagrant powershell [-- extra powershell args] 这将在主机上打开PowerShell提示符,进入正在运行的vagrant机器. ...
- Azure云 windows平台 搭建ftp服务器注意事项
1.iis设置防火墙支持端口(1-65535自定义端口,一般3-5个都行) 2.客户端连接使用被动链接模式 3.endpoint终结点添加20,21,以及你自定义的防火墙支持端口. 4.本地防火墙添加 ...
- PAT乙级1027
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输 ...
- 一个简单好用的http服务器
http-server 是一个简单的零配置命令行HTTP服务器, 基于 nodeJs. 如果你不想重复的写 nodeJs 的 web-server.js, 则可以使用这个. 安装 (全局安装加 -g) ...
- PHP/Laravel轻松上传超大文件
我们知道,在以前,文件上传采用的是直接传整个文件的方式,这种方式对付一些小文件是没有问题的.而当需要上传大文件时,此种方式不仅操作繁琐,需要修改web服务器和后端语言的配置,而且会大量占用服务器的内存 ...
- Hadoop(18)-MapReduce框架原理-WritableComparable排序和GroupingComparator分组
1.排序概述 2.排序分类 3.WritableComparable案例 这个文件,是大数据-Hadoop生态(12)-Hadoop序列化和源码追踪的输出文件,可以看到,文件根据key,也就是手机号进 ...
- apple remote desktop
下面就是重点了: 1.下载v 3.7.2版本 :http://pan.baidu.com/s/1jGmrhuI 密码:vg2r 序列号: XARD-030-000-N-LXC-RP7-FBX-23 ...