当form设置为enctype="multipart/form-data",获取数据乱码

huluhulu88 2010-01-09 05:04:55
当form设置为enctype="multipart/form-data",获取数据就乱码,如果不设置就一切都正常。于是在找了很多资料,都是千篇一律。很多都是转载。还是不能解决问题。

网上说的解决方法:
1:<%@ page contentType="text/html;charset=UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
页面文件设utf-8。而且文件的物理编码也是utf-8。(我项目的工作环境就是utf-8)

2:在最前面加上request.setCharacterEncoding("UTF-8")

3: 对每个字符串进行转码 如:new String(subject.getBytes("ISO-8859-1"),"utf-8")

4:写个过滤器过滤(用的spring的过滤器utf-8)

5:修改tomcat中的配置文件 如:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />


这几条我都检查过了。可始终不行。不过有个问题想不通request.getCharacterEncoding()总是GBK的编码,无论是否设置enctype。不知与目前这个问题有什么联系。
...全文
608 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
failure_lee 2011-06-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qq77504166 的回复:]
这个应该还是从iso-8859-1转换到中文编码,你测试一下
[/Quote]
弄了半天,这个是正解。
if("sex".equals(fileItem.getFieldName())){
sex =new String(fileItem.getString().getBytes("iso-8859-1"),"utf-8");
huluhulu88 2010-01-12
  • 打赏
  • 举报
回复
找到原因了,是过滤器链有问题,其中有两个设置编码的过滤器。第一个设置utf-8,第二个默认双是gbk的。
道光2008 2010-01-09
  • 打赏
  • 举报
回复
enctype="multipart/form-data"是不能传递表单数据的
zl3450341 2010-01-09
  • 打赏
  • 举报
回复
qq77504166 2010-01-09
  • 打赏
  • 举报
回复
这个应该还是从iso-8859-1转换到中文编码,你测试一下
config_man 2010-01-09
  • 打赏
  • 举报
回复
路过,帮顶!

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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