中文保存出现乱码

 (1)每个JSP页面都设置了<%@ page contentType="text/html;charset=UTF-8"%>

(2) web.xml文件中配置了EncodingFilter 使用的spring框架中现成的类. 设置为了UTF-8

(3)Mysql5.5数据库建表时也采用了UTF-8

 

 

现象为数据表的图形操作界面中可以插入和显示中文...正常的中文也可以在JSP页面中正常显示...但是.从JSP页面提交的中文

存入数据库中后是乱码....找到了原因是Action类 ,.这一步就出了问题...

在代码中加入红色粗体部分后.乱码问题消失..但这不是有效的解决办法...谁能给点建议???????

 public ActionForward addNews(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  DynaValidatorForm addNewsForm=(DynaValidatorForm)form;
  String title=(String)addNewsForm.get("title");
  String cpmtemt=(String)addNewsForm.get("cpmtemt");
  
  byte[] b=cpmtemt.getBytes("ISO-8859-1");
  cpmtemt=new String(b,"UTF-8");

  String categoryId=(String)addNewsForm.get("categoryId");
  Category category=mgr.getCategory(categoryId);
  User user=mgr.getUserByName((String)request.getSession().getAttribute("username"));
  System.out.println("fdsajfsakfj中欧昂倒萨方的哦暗示飞  "+cpmtemt+" "+title);
  try {
   News news=new News();
   news.setCategory(category);
   news.setCpmtemt(cpmtemt);
   news.setLastModifyDate(new Date());
   news.setPostDate(new Date());
   news.setTitle(title);
   news.setUser(user);
   mgr.saveNews(news);
   request.setAttribute("news", news);
  } catch (Exception e) {
   e.printStackTrace();
   return mapping.findForward("errorpage");
  }
  return mapping.findForward("detailNews");
 }

 

 

 

 

通过参考"关于GET和POST方法的编解码问题"一文找到解决上边问题的根本方法....设置JSP页面表单的提交方法为:POST

代码如下:    <html:form action="/newsManagerAction" method="post" focus="categoryName">
去掉上边代码中的红色字体的代码
  byte[] b=cpmtemt.getBytes("ISO-8859-1");
  cpmtemt=new String(b,"UTF-8"); 
中文的保存,显示都正常了....造成这种现象的根本原因是,编码过滤器Filter,只对Post方法的提交编解码有效没有考虑Get方法...可以自己编译编码过滤器来支持Get方法中存在中文传输.

简单的说:spring 框架的编码filter 只适用于post方法.对get的方法无效.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值