六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 37|回复: 0

解决JSP文件中的乱码问题

[复制链接]

升级  47%

103

主题

103

主题

103

主题

举人

Rank: 3Rank: 3

积分
341
 楼主| 发表于 2013-1-29 11:42:45 | 显示全部楼层 |阅读模式
a.jsp页面内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><form action="/Ajax_First/b.jsp" method="POST">name:<input type="text" name="name" /><input type="submit" /></form></body></html> b.jsp页面内容如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><%String name=request.getParameter("name");%>  <%=name %></body></html>当在a.jsp页面中输入中文并提交后,在b.jsp页面出现乱码,此时可以用如下方法进行设置。
 

解决方法一:
a.jsp页面的内容不变,b.jsp页面中的内容变化如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body><%//String name=request.getParameter("name");String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8") ;%>  <%=name %></body></html> 解决方法二:
注意:此方法只能解决post提交方式。
写一个过滤器如下:
web.xml文件插入代码如下:
  <filter>  <filter-name>filter</filter-name>  <filter-class>com.neusoft.EncodingFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>filter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping> EncodingFilter.java代码如下:
package com.neusoft;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 EncodingFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding("UTF-8");chain.doFilter(request, response);}public void init(FilterConfig arg0) throws ServletException {}} 解决方法三:
当a.jsp页面中form提交的method="GET"时,需要修改tomcat/conf下的server.xml文件,在<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />这个标签的后面加上这个属性URIEncoding="UTF-8"
虽然可以但是有前提的,若果你过滤器没有配置,则只是配置了server.xml文件,这样只有在表单是get传值时候才可以!当是post方式时,照样是乱码!
这时我们就可以看出在tomcat5中的post与get传值方式是不一样的。
 
解决方法四:
要想即解决get请求又解决post请求,那就么要同时实现方法二和方法三。
 
 
 
 
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表