第一种:硬编码方式
1)在 .jsp 页面中,修改字符集设置:
<%@ page pageEncoding="GB2312" %>
或者,<%@ page contentType="text/html;GB2312" %>
该代码的作用就是告诉JSP引擎(如Tomcat),本页面使用的字符集是GB2312。如果没有此行代码,JSP则使用默认的字符集(通常为utf-8)。
2)更改Servlet中相关的代码:
设置输出页面的字符集GB2312,并对获取的内容进行强制转码;
//JSP引擎会自动把输出的页面转换成指定的字符集
response.setCharacterEncoding("text/html;GB2312");
//使用request.getParpameter("参数名");获得参数值
//参数值默认的字符集是ISO8859_1,如果不进行字符集转换,将导致汉字乱码
String sname = request.getParameter("name") ;
String name = new String(sname.getBytes("ISO8859_1"),"GB2312") ;
//new String(字符串值.getBytes(“原编码方式”),”目录编码方式”);
第二种:采用过滤器方式
1)在 .jsp 页面中,修改字符集设置:
<%@ page pageEncoding="GB2312" %>
或者,<%@ page contentType="text/html;GB2312" %>
该代码的作用就是告诉JSP引擎(如Tomcat),本页面使用的字符集是GB2312。如果没有此行代码,JSP则使用默认的字符集(通常为utf-8)。
2)编写一个过滤器:CharacterEncodingFilter.java
package cn.wjz.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/** 请求数据统一编码过滤器 */
public class CharacterEncodingFilter implements Filter {
private FilterConfig config ;
//此Filter被释放时的回调方法
public void destroy() {
}
//主要做过滤工作的方法
//FilterChain用于调用过滤器链中的下一个过滤器
public void doFilter(ServletRequest request,
ServletResponse response,FilterChain chain)
throws IOException, ServletException {
//获取Filter的初始化参数的值
String encoding = config.getInitParameter("encoding") ;
if(encoding != null && !"".equals(encoding)){
//设置请求数据的编码方式
request.setCharacterEncoding(encoding) ;
}
//把请求和响应对象传给过滤链中的下一个要调用的过滤器或Servlet
chain.doFilter(request, response) ;
}
//Filter初始化时的回调方法
//FilterConfig接口实例中封装了这个Filter的初始化参数
public void init(FilterConfig config) throws ServletException {
this.config = config ;
}
}
3)注册过滤器,修改配置文件web.xml
<!-- 定义一个过滤器 -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>cn.wjz.web.filter.CharacterEncodingFilter
</filter-class>
<!-- 配置初始化参数 -->
<init-param>
<param-name>encoding</param-name>
<!—设置encoding的值为GB2312 -->
<param-value>GB2312</param-value>
</init-param>
</filter>
<!-- 过滤器的映射配置 -->
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
JSP页面出现中文乱码的两种解决方案
转载lishilinln 博主文章分类:Java
上一篇:jQuery 基础用法
下一篇:Eclipse 中常用快捷键
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
50种网络故障解决方案-上篇网络故障 网络工程师 IT培训 计算机培训
-
Matplotlib中文乱码解决方案(两种方式)
注更加符合中国人的阅读习惯。因此,本节重点讲解如何在 Windows 环境下让 Matplotlib 显示中文。
matplotlib python 显示中文 配置文件 中文乱码 -
JSP页面传值出现乱码解决方案
关于乱码,真的是一件很令人头疼的事情
百度 数据库 spring -
JSP中文乱码问题终极解决方案
JSP乱码问题很好的文章装载子CSDN
浏览器 源文件 解决方案 中文 如图所示 -
git仓库迁移的两种解决方案
git仓库迁移的两种解决方案
git 服务器 私有仓库 版本库 ip地址