jsp页面提交到action,中文乱码(服务器Tomcat5.0)

溺水的鱼 2009-08-11 07:12:18
我通过jsp页面的一个文本域,提交到action里面,所有编码设置的都是UTF-8(jsp页面,配置文件等等),其中包括一个设置编码的filter,跟踪filter确实也执行了下面的语句:encoding为UTF-8
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
但是在action里面通过String productName=request.getParameter("name");取到的值还是乱码,
如果productName = new String(productName.getBytes("ISO-8859-1"),"UTF-8");这样的话就不是乱码。

请大虾们帮忙看看,怎么能解决这个问题啊。

...全文
4186 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
xlfzj 2012-06-18
  • 打赏
  • 举报
回复
4楼的正解,get与post对此应该这么大,是因为get与post的传值方式有着本质区别
gouxiongyaya 2011-07-29
  • 打赏
  • 举报
回复
我那个去,我也出现了楼主一样的问题啊
明明过滤器里设置了字符编码,但是在action中取得还是乱码
楼主怎么解决的啊?
pqz231372 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaozejun 的回复:]
关于中文乱码解决办法有几种:
1.在页面设置编码方式(UTF-8)
2.编写字符编码过滤器 在过滤器中写下一下代码:
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
//设置字符编码属性
request.set……
[/Quote]

和好很强大 顶你
yan19861206 2009-08-14
  • 打赏
  • 举报
回复
最简单的方法就是把编码方式改成GBK的
dongfang1017 2009-08-14
  • 打赏
  • 举报
回复
看了这么多方法
我觉得 还是 过滤器好用
省事 操作也方便
性能也好
sebatinsky 2009-08-13
  • 打赏
  • 举报
回复
乱码,又提升一个高度,你上网去看看,URL的两种方式就知道了,哎,统一了,也有可能出现乱码..
SKennedy 2009-08-13
  • 打赏
  • 举报
回复
用过滤器,再不行就form表单的提交方式改成post,就OK了
kky2010_110 2009-08-13
  • 打赏
  • 举报
回复
post和get提交是有区别的,get提交需要uri编码,你仔细看看百度和Google提交后地址栏是什么东东,好多看不懂的
YFY19880718 2009-08-13
  • 打赏
  • 举报
回复
改成GBK
yonghenghxq 2009-08-13
  • 打赏
  • 举报
回复
这种情况是在数据传递的过程中出现乱码,可以在获取的时候对其进行编码格式的转换来解决!
robyjeffding 2009-08-12
  • 打赏
  • 举报
回复
首先需要修改服务器Tomcat的编码,打开config目录下的server.xml文件,在<Connector>节点处添加URIEncoding="UTF-8";
然后再写个过滤器,就万事OK了!

package com.company.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);//继续过滤
response.setContentType("text/html;charset=utf-8");//过滤响应的编码

}

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

}

}


在web.xml中配置:

<!--配置字符编码的过滤器-->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.company.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- 过滤器映射 -->
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern><!-- 对所有资源过滤 -->
</filter-mapping>
JavaAlpha 2009-08-12
  • 打赏
  • 举报
回复
提交直接就手动转码
JavaAlpha 2009-08-12
  • 打赏
  • 举报
回复
1、JSP与页面参数之间的乱码

  JSP获取页面参数时一般采用系统默认的编码方式,如果页面参数的编码类型和系统默认的编码类型不一致,很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前,强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或 request.setCharacterEncoding("gb2312")。

  如果在JSP将变量输出到页面时出现了乱码,可以通过设置 response.setContentType("text/html;charset=GBK")或 response.setContentType("text/html;charset=gb2312")解决。


手动转码

String gb = new String(iso.getBytes("ISO-8859-1"),"GB2312");
bea_java 2009-08-12
  • 打赏
  • 举报
回复
在Struts2中的过滤器中设置编码方式 全部解决。
溺水的鱼 2009-08-12
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 jianchencool 的回复:]
String productName=request.getParameter("name");取到的值还是乱码,
如果productName = new String(productName.getBytes("ISO-8859-1"),"UTF-8");这样的话就不是乱码。
这说明你的过滤器没生效,没完成字符转码嘛!
[/Quote]

表面看是没奏效,但是我跟踪filter确实设置了编码方式为UTF-8了,见鬼了
cyshenfh 2009-08-12
  • 打赏
  • 举报
回复
用过滤器来处理
jianchencool 2009-08-12
  • 打赏
  • 举报
回复
String productName=request.getParameter("name");取到的值还是乱码,
如果productName = new String(productName.getBytes("ISO-8859-1"),"UTF-8");这样的话就不是乱码。

这说明你的过滤器没生效,没完成字符转码嘛!
kelvin_yuwenjing 2009-08-12
  • 打赏
  • 举报
回复
关注,学习
java_coding 2009-08-12
  • 打赏
  • 举报
回复
用过滤器来处理我也试过,不过也不奏效,所以给楼主另一个方法:
你写一个类继承org.apache.struts.action.RequestProcessor;
具体这样:

package com.liuwei;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.RequestProcessor;

public class MyRequestPro extends RequestProcessor {

/* (non-Javadoc)
* @see org.apache.struts.action.RequestProcessor#process(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
@Override
public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
super.process(request, response);
}

}

之后在配置文件struts-config.xml中配置如下:
<controller processorClass="com.accp.y16.favorite.filter.MyRequestPro" />
这样就解决中文乱码问题了,不过这只能解决post请求,如果是get请求,只能用new String()构造了!
溺水的鱼 2009-08-12
  • 打赏
  • 举报
回复
我所有地方涉及到编码的都设置为了UTF-8,没有用到GET请求,但是就是一个简单的文本域post到action中乱码了。。。
加载更多回复(26)
本书以网络留言板开发为主线将JavaWeb知识融会贯通,知识模块完整,通过静态网页篇、动态网站篇、系统框架篇、项目实战篇循序渐进地使学生全面掌握JavaWeb开发技术。静态网页篇主要讲解HTML、CSS、DIV、JavaScript等基础知识。动态网站篇深入讲解Servlet、JSP、JavaBean、JDBC数据库连接、数据库连接池等Java Web开发的核心技术。系统框架篇则是以架构设计的高度,讲解搭建网站的三大框架Struts、Hibernate、Sprin9及标签库。项目实战篇详细阐述了通用论坛BBS、社交网站、DIY商品电子交易平台3个系统的开发细节,使读者真正掌握JavaWeb开发的精髓。 本书论述精准而深刻,程序实例丰富实用,不仅适用于数字媒体技术、计算机等相关专业的学生作为教材.廿可作为IT培训机构的培训教材,还可供广大JavaWeb程序员作为参考。 静态网页篇 第1章 开发环境安装及配置 1.1 JDK的安装及测试 1.2 Tomcat的安装及测试 1.3 MyEclipse的安装及配置 1.4 MySQL的安装及配置 第2章 HTML及其应用 2.1 网页设计流程 2.2 HTML的基础知识 2.3 HTML文档结构 2.4 HTML常用标记 第3章 CSS及其应用 3.1 CSS的基础知识 3.2 DIV基础知识 3.3 DIV + CSS实现个人网站首页 第4章 JavaScript及其应用 4.1 JavaScript 的基础知识 4.2 JavaScript 的基本语法 4.3 JavaScript 事件 4.4 JavaScript 常用对象 动态网站篇 第5章 Web程序运行原理 5.1 Web程序架构 5.2 Web服务器汇总 5.3 Web程序流程 5.4 Web应用程序开发 第6章 Servlet及其应用 6.1 Servlet 简介 6.2 Servlet 应用实例 6.3 HTML表单在Servlet中的应用 6.4 HTML表单验证 6.5 FCKeditor 框架应用 第7章 JDBC数据库连接 7.1 JDBC 概述 7.2 JDBC的工作原理 7.3 数据库的安装与使用 7.4 JDBC 编程 7.5 网络留言板V1.0 第8章数据库连接池技术 8.1 数据库连接池 8.2 网络留言板V2.0 8.3 Commons DbUtils 8.4 网络留言板V3.0 第9章 JSP及其应用 9.1 JSP基础知识 9.2 JSP 语法 9.3 JSP 范例 9.4 网络留言板V4.0 第10章 JavaBean及其应用 10.1 JavaBean 基础知识 10.2 JavaBean 在 JSP 中的调用 10.3 JavaBean 的作用域 10.4 JSP+JavaBean 的应用 10.5 网络留言板V5.0 系统框架篇 第11章 Stmts框架及其应用 11.1 Struts 基础知识 11.2 Struts 应用步骤 11.3 Struts 开发中的中文码问题 11.4 Action 数据获取与传递 11.5 Struts 表单验证 第12章 标签库及其应用 12.1 Struts标签库基础知识 12.2 Struts标签库应用实例 12.3 JSTL基础知识 12.4 EL表达式基础知识 12.5 JSTL核心标签库 12.6 网络留言板V6.0 第13章 Hibernate框架及其应用 13.1 Hibernate 基础知识 13.2 DataBase Explorer 透视图 13.3 Hibernate 应用实例 第14章 Spring框架及其应用 14.1 Spring 基础知识 14.2 Spring框架应用实例 14.3 Spring 和 Hibernate 组合开发实例 第15章 SSH整合应用 15.1 SSH整合理念 15.2 网络留言板V7.0 15.3 实例开发步骤 15.4 实例完善 项目实战篇 第16章 通用论坛BBS设计与实现 16.1 关键技术解析 16.2 系统功能分析 16.3 数据库设计与连接 16.4 各模块功能设计与实现 第17章 社交网站设计与实现 17.1 关键技术解析 17.2 系统功能分析 17.3 数据库表设计 17.4 各模块功能设计与实现 第18章 DIY商品电子交易平台设计与实现 18.1 关键技术解析 18.2 系统功能分析 18.3 数据库表设计 18.4 各模块功能设计与实现

81,094

社区成员

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

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