在我写的两个JSP页面中传递Form参数出现乱码是怎么回事啊??
该功能是上传视频,一个页面uploadFile.jsp是填写Form表单,
另一个页面process.jsp是处理文件上传的代码,
从uploadFile.jsp中接受到的表单数据在process.jsp中打印出来全是乱码,
两个页面的编码都是UTF-8,但还是出现了乱码。
向各位请教一下???
该功能是上传视频,一个页面uploadFile.jsp是填写Form表单,
另一个页面process.jsp是处理文件上传的代码,
从uploadFile.jsp中接受到的表单数据在process.jsp中打印出来全是乱码,
两个页面的编码都是UTF-8,但还是出现了乱码。
向各位请教一下???
解决方案 »
- filter过滤后台管理员登陆问题!
- 类似不在线QA系统的小项目用什么框架比较好
- 我是新手,一个简单的问题,大家帮我看看
- 求java sun studio creator注册码?
- Jsp中声明变量的小误区
- 怎么提高网页打开速度
- 小弟,迷途,敢问谁做过对日外包?
- 请高手帮忙,客户端调用WebServices时遇到的异常问题,快急死了,请高手耐心帮忙看看吧
- 请问高手,在JSP中,有替代replace()的函数吗?
- jsp中使用javaBean,javaBean的位置应放在。。
- struts上传文件需要保存在不同的文件夹
- 求SQL 语句和java类,怎样在SQL Server 2000查询结果中分页?
增加属性:
URIEncoding="UTF-8"2、传递的参数如果包含中文,最好:
encodeURIComponent()
编码一下
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如果不行就在传参数的时候编码一下....
<%
request.setCharacterEncoding("gb2312");
response.setCharacterEncoding("gb2312");
response.setContentType("text/html";charset="gb2312");
%>
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;
} }}
强转: String name=new String(name.getBytes("ISO-8859-1"),"utf-8");
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楼朋友总结的不错,楼主参考一下
建议post