如何解决JSP页面之间传递参数的乱码问题????

B0526027 2009-05-06 11:19:04
在我写的两个JSP页面中传递Form参数出现乱码是怎么回事啊??
该功能是上传视频,一个页面uploadFile.jsp是填写Form表单,
另一个页面process.jsp是处理文件上传的代码,
从uploadFile.jsp中接受到的表单数据在process.jsp中打印出来全是乱码,
两个页面的编码都是UTF-8,但还是出现了乱码。
向各位请教一下???
...全文
938 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
gao512008 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fafuhefan 的回复:]
楼主可以看此帖
[/Quote]
robyjeffding 2009-05-07
  • 打赏
  • 举报
回复
过滤器

package com.dz.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;
/**
* 编码过滤器实体类
* @author Administrator
*
*/
public class EncodingFilter implements Filter {
private FilterConfig config;
private String encoding="utf-8";
public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(encoding);
chain.doFilter(request, response);//继续过滤

}

public void init(FilterConfig config) throws ServletException {
this.config=config;
String s=config.getInitParameter("encoding");//获取初始化参数数,
if(s!=null){
this.encoding=s;
}

}

}


aaa7782814 2009-05-07
  • 打赏
  • 举报
回复
乱码的方式还真是层出不穷。友情up。
zhaojp0411 2009-05-07
  • 打赏
  • 举报
回复
我有个类似的问题,URL 编码的问题,我有个文件是中文名子,我想访问通过浏览器访问,可就是说找不到,路径有错?这是怎么回事
tanliangwei520 2009-05-07
  • 打赏
  • 举报
回复

<%
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
response.setContentType("text/html";charset="gb2312");
%>

s278777851 2009-05-07
  • 打赏
  • 举报
回复

1、对Servlet:
request.setCharacterEncoding("GB2312"); //设置输入编码格式
response.setContentType("text/html;charset=GB2312"); //设置输出编码格式
PrintWriter out = response.getWriter(); //建议使用PrintWriter输出
String name = request.getParameter("name");

2、对JSP:
(1)、我们要保证JSP向客户端输出时是采用中文编码方式输出的,即无论如何我们首先在我们的JSP源代编中加入以下一行:
<%@page contentType="text/html; charset=gb2312"%>
(2)、为了让JSP能正确获得传入的参数,我们在JSP源文件头加入下面一句:
<%request.setCharacterEncoding("GB2312");%>
(3)、为了让JSP编译器能正确地解码我们的含有中文字符的JSP文件,我们需要在JSP

如果不行就在传参数的时候编码一下....
north86 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fafuhefan 的回复:]
楼主可以看此帖
[/Quote]
很好,看了应该可以解决了。顶一下
陪公主读书 2009-05-07
  • 打赏
  • 举报
回复
你的form表单的提交方式是“get”还是“post”啊?
建议post
  • 打赏
  • 举报
回复
[Quote=引用楼主 B0526027 的帖子:]
在我写的两个JSP页面中传递Form参数出现乱码是怎么回事啊??
该功能是上传视频,一个页面uploadFile.jsp是填写Form表单,
另一个页面process.jsp是处理文件上传的代码,
从uploadFile.jsp中接受到的表单数据在process.jsp中打印出来全是乱码,
两个页面的编码都是UTF-8,但还是出现了乱码。
向各位请教一下???
[/Quote]
荐于经常看到朋友说哪里出现中文乱码了,菜鸟我以自己在项目经常遇到的整理了一下,有以下几个方面:

1.最基本的在jsp页面上要把pageEncoding设置为中文,如: <%@ page language="java" pageEncoding="GBK"%>

2.对于表单的doPost()提交,也会出现中文出现乱码,可以在servlet里设置如下:request.setCharacterEncoding("GBK"),response.setCharacterEncoding("GBK"),不过此方法在每个servlet都要设置,很麻烦,建议写个过滤器设置。可以参考以下:
    public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest request_1 = (HttpServletRequest) request;
HttpServletResponse response_1 = (HttpServletResponse) response;

// 转换编码,并且加上去缓存
request_1.setCharacterEncoding("GBK");
response_1.setCharacterEncoding("GBK");
chain.doFilter(request, response);

}
3、第三种就是 如果用doGet()提交,后面跟的参数如果也是中文,这个解决方法可以在tomcat或JBoss的配置文件里面配置,以tomcat为例:
     <Connector port="8099" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
  在这里面最后加上URIEncoding="GBK".
4、ajax也会产生乱码问题,这个问题可以在tomcat的配置那里解决。

5、文件上传时文件名也会出现乱码。
可以用此方法paramMap.put(fi.getFieldName(), new String(fi.getString().getBytes("ISO-8859-1"),"GBK"));

知识浅陋,若有错误,请大虾指正或其他更多的补充 。
1楼朋友总结的不错,楼主参考一下
电灯泡 2009-05-07
  • 打赏
  • 举报
回复
上面说的,是给12楼的哈
电灯泡 2009-05-07
  • 打赏
  • 举报
回复
如果是乱码的话,对于get方法,带有中文的url,可通过修改%tomcat_home%/conf/server.xml文件,在<Connector port="8080" protocol="HTTP/1.1" maxThreads="100" connectionTimeout="10000" redirectPort="8443" />后面加一句URIEncoding="utf-8",再重启tomcat试试
mike_24 2009-05-07
  • 打赏
  • 举报
回复
不知道,UP
spotline 2009-05-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zm851203 的回复:]
用url传参,这种方式的话。一般情况下都会出现乱码的  例如: excaple.jsp?name="张三" 如果只是一两个页面的话,强转一下吧。多的话建议使用过滤器
强转: String name=new String(name.getBytes("ISO-8859-1"),"utf-8");
[/Quote]

^_^常采用的方法
zm_hs 2009-05-07
  • 打赏
  • 举报
回复
用url传参,这种方式的话。一般情况下都会出现乱码的 例如: excaple.jsp?name="张三" 如果只是一两个页面的话,强转一下吧。多的话建议使用过滤器
强转: String name=new String(name.getBytes("ISO-8859-1"),"utf-8");
satell211 2009-05-07
  • 打赏
  • 举报
回复

用过滤器比较方便
sun403 2009-05-07
  • 打赏
  • 举报
回复
传递中文时utf-8 最好改为GBK
louisgarcia 2009-05-06
  • 打赏
  • 举报
回复
写个过滤器
tianxuan2008 2009-05-06
  • 打赏
  • 举报
回复
用filter过滤器 ,可以写一下代码来看看吗?
kjl1225 2009-05-06
  • 打赏
  • 举报
回复
你可以再配置文件加个filter过滤器啊..写个filter方法就可以了..
jinxfei 2009-05-06
  • 打赏
  • 举报
回复
1、在tomcat/conf/server.xml中,找到connecter标签(就是定义8080端口的标签),
增加属性:
URIEncoding="UTF-8"

2、传递的参数如果包含中文,最好:
encodeURIComponent()
编码一下
加载更多回复(2)

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧