关于jsp传递参数乱码问题
时间:2008-05-10 10:56:11
来源:论坛整理 作者: 编辑:chinaitzhe
-----------------------------第一次查询---------------------------------
JSP:
<input type="text" name="title"> <input type="button" value="查询">
Action:
String title = request.getParameter("title"); 中文参数正常
request.setAttribute("title",title);
-----------------------------------------------------------------------
-----------------------------点击下一页---------------------------------
JSP:
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
<pg:param name="title" value='${title}' /> 中文参数正常
Action:
String title = request.getParameter("title"); 中文参数乱码
--------------------------------------------------------------------------
我设置了GBK编码过滤器(传递时有经过过滤器)
Server.xml设置了 URIEncoding="GBK"
页面 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
都不行,最后用强转
title = new String(title.etBytes("iso8859-1"),"GBK");
或
title = new String(title.etBytes("iso8859-1"),"gb2312");
还是没有解决,肯请高手们多多指教
网友回复:咋就没人给个回应呢
网友回复:过滤器 代码 写一下 就可以了 其他的应该不用在过滤了
过滤器的代码
HttpServletRequest em=(HttpServletRequest)request;
em.setCharacterEncoding("GBK");
只要在 web.xml 里
<url-pattern>/* </url-pattern>
/* 所有的页都会自动过滤中文 不管你如何调用
网友回复:
这个我有提到了,我已经设置了
网友回复:假如页面出现的 乱码 就在页面加
request.setCharacterEncoding("GBK");
假如是在 servlet里面出现的乱码 就在 servlet 里加上面的代码.
网友回复:你的form提交方式为get?
tomcat的配置文件server.xml里加这句:
- XML code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ <Connector URIEncoding="GBK" port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
filter只能解决form为post的,对get无效
网友回复:
这个我有提到了,我已经设置了
网友回复:
已经在过滤器里设置了,而且在页面请求到服务器时就有经过过滤器
网友回复:
在每个jsp页面加上下面3行:
<%@ page pageEncoding="GBK"%>
<%@ page contentType="text/html;charset=GBK"%>
<%request.setCharacterEncoding("GBK");%>
//把GBK改成gb2312也可以
看看行不行
网友回复:action里加上request.setCharacterEncoding("GBK");
试试.
估计假如用request强制转换的方法都不行,那上面的方法也不行.
不会是没重新部署吧,
1.你把E:\Tomcat 5.5\work\Catalina\localhost下的和你工程名相同的文件删除掉.
2.重起TOMCAT,然后重新部署工程试试.
记得大学的一个最高手的老师经常说:大傻猫,...
所以请看看是不是大傻猫的问题.
网友回复:我觉得假如用过滤器和request强制转换这两种万能方法都不行.
应该就是工程在TOMCAT服务器下的.class文件没被替换.
反正在TOMCAT5.0之前经常有这问题.都习惯把%TOMCAT_HOME%\work\Catalina\localhost的快捷方式放桌面上了.
网友回复:给你看看我传参时乱码的处理方法吧,你对照一下哪一步没有做好。
①修改Tomcat---->conf----->server.xml文件,在修改端口的标签后面加一行代码,如下:
- XML code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
②编写过滤器Filter
- Java code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ 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 ...{ @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 arg0) throws ServletException ...{ } }
利用过滤器,把requst传递的中文参数都设成“UTF-8”编码。
③修改web.xml文件
打开项目里的web.xml文件,在前面加上如下代码:
- XML code
Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ <filter> <filter-name>characterEncoding</filter-name> <filter-class>com.v512.example.CharacterEncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
注重其过滤的URL为“/*”,表示当前的request请求。为了使设置生效,重起tomcat。
网友回复:
网友回复:在struts配置文件src/struts.xml里
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="GBK" />
<package name
网友回复:非常感谢大家的热心回复,问题我自己已经找出来了
<%@ taglib uri="http://jsptags.com/tags/navigation/pager" prefix="pg"%>
是这个国外标签不支持中文,只要不用这个标签就可以了,或者把工程统一改成UTF-8,这样更麻烦
关键字:jsp,传递,参数,乱码,问题,
上一篇:sessioncontains
下一篇:下面没有链接了











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面