解决jsp中文乱码合集

在写web程序的时候我经常遇到中文乱码问题,特别让人头疼,所以今天特地搜集了一些处理中文乱码的资料,作出如下总结,如有不当之处欢迎广大博友进行指正。
1.HTML中文编码转换

在JSP文件中的静态文字显示乱码,则需要在<head></head>之间增加中文设置代码,如下清单所示

<span style="font-size:14px;"><head>
<span style="white-space:pre">	</span><meta http-equiv="content-type" content="text/html;charset=utf-8">
</head></span>

charset指定UTF-8字符集,当然也可以指定其他支持中文的编码,如GBK,GB2312,但是整个Web应用一定要统一编码。

2JSP中文编码转换

方法1:在每个JSP文件开头增加如下代码:

<span style="font-size:14px;"><%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %></span>


方法2:对于post请求设置编码参数即可:

<span style="font-size:14px;">request.setCharacterEncoding("utf-8");</span>

方法3:使用编码过滤器。创建过滤器类SetCharractorEncoding,源码如下:

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 SetCharacterEncoding implements Filter {

	@Override
	public void destroy() {
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// 设置字符编码
		request.setCharacterEncoding("utf-8");
		chain.doFilter(request, response);
	}
	
	@Override
	public void init(FilterConfig filterConfig) throws ServletException {		
	}
}
过滤器类还须在web.xml中进行配置,设定要过滤那些请求。过滤器在web.xml中的配置如下所示:

<span style="font-size:14px;"><filter>
<span style="white-space:pre">	</span><filter-name>setCharacterEncoding</filter-name>
	<filter-class>control.sevlet.SetCharacterEncoding</filter-class>
</filter>
<filter-mapping>
	<filter-name>setCharacterEncoding</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping></span>

方法1,方法2,方法3经常需要使用,但一般不是独立运用的,而是两两结合,可以根据不同情况组合使用。

方法4:URL传参导致乱码问题,可以修改tomcat根目录中的conf子目录下的sever.xml文件,在其中加入URLEncoding="utf-8"

<span style="font-size:14px;"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URLEncoding="utf-8" /> </span>

方法5:对于get请求可以通过先解码在编码的方式如下

<span style="font-size:14px;">String var = req.getParameter("username");
String username = new String(var.getBytes("iso-8859-1"),"utf-8");</span>

方法6:对于get请求还可以在tomcat根目录中的conf子目录下的sever.xml文件中加入useBodyEncodingForURI="true"如下:

<span style="font-size:14px;"><Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" /> </span>
方法7:如果是调用response.sendRedirect传递中文参数产生乱码(对于某些超链接同样适用),如:response.sendRedirect("a.jsp?p=中文参数");可以使用如下方法:

<span style="font-size:14px;"><%@page import="java.net.URLEncoder" %>
  <%
  	String p = "中文参数";
  	p = URLEncoder.encode(p, "UTF-8");
  	response.sendRedirect("a.jsp?p=" +p);
   %></span>

声明:以上便是关于jsp中文乱码的解决方法,方法全部来自互联网和书籍,在此做出总结,算是笔记吧,方便以后查阅。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值