日期:2014-05-20  浏览次数:20611 次

jsp中中文乱码的问题?数据库也成乱码了。。
代码如下:<%
/*
*初始化Secret对象
*/
 Secret s=new Secret();//实例化Secret
 String id_str=request.getParameter("id");
 if(id_str!=null&&!id_str.equals("")){
s.setId(Long.valueOf(id_str));
 }

 String secret=request.getParameter("secret");
 //处理乱码
 secret=secret==null?null:new String(secret.getBytes("ISO-8859-1"),"UTF-8"); if(secret!=null&&!secret.equals("")){
  s.setSecret(secret);
 }
 s.setIsdelete((short)0);//表示显示数据
 /*
 *判断当前的操作请求是添加还是修改
 */
 String update=request.getParameter("update");
 if(update!=null&&!update.equals("")){
boolean isupdate=update.equals("insert")?digger.insert(s):digger.update(s);
if(isupdate){
out.println("<script type=\"text/javascript\">");
out.println("alert(\"更新成功!\");");
out.println("open(\"index.jsp\",\"_self\");");
out.println("</script>");
}else{
out.println("<script type=\"text/javascript\">");
out.println("alert(\"更新失败!\");");
out.println("open(\"index.jsp\",\"_self\");");
out.println("</script>");
}
//有了return语句之后,就不会执行后面的JSP脚本
return;
 }
 /*
 *执行删除操作
 */
 String action=request.getParameter("action");
 if(action!=null&&!action.equals("")){
if(action.equals("delete")){
s.setIsdelete((short)1);
if(digger.update(s)){
out.println("<script type=\"text/javascript\">");
out.println("alert(\"删除成功!\");");
out.println("open(\"index.jsp\",\"_self\");");
out.println("</script>");
}else{
out.println("<script type=\"text/javascript\">");
out.println("alert(\"删除失败!\");");
out.println("open(\"index.jsp\",\"_self\");");
out.println("</script>");
}
return;
}
 }
 action=secret==null?"insert":"modify";
 pageContext.setAttribute("update",action);
 pageContext.setAttribute("id",id_str);
 pageContext.setAttribute("secret",secret);
 
%>
  
  <body>
  <form action="update.jsp">
  <input type="hidden" name="update" value="${pageScope.update}"/>
  <input type="hidden" name="id" value="${pageScope.id}"/>
  <input type="text" name="secret" value="${pageScope.secret}"/>
  <input type="submit" value="提交"/>
   
  </form>
   
  </body>
</html>
服务器没有报错。。一修改或者添加都会出现中文乱码。。。

------解决方案--------------------

彻底解决struts2中文乱码处理秘籍:

1、JSP请求页面和响应页面的字符编码统一使用“UTF-8”
1.1、设置IDE开发环境的字符编码
1.2、设置project工程的字符编码
1.3、JSP文件的字符编码环境

2、在struts.xml中配置:
<!-- 指定Web应用的默认编码集,相当于调用 HttpServletRequest的setCharacterEncoding方法 -->
<constant name="struts.i18n.encoding" value="UTF-8"/> <!--internationalization 国际化-->
此标签的作用相当于在Servlet中的request.setCharacterEncoding("UTF-8");

3、以上两个步骤可以处理表单为post的方式提交的中文数据,如果依然处理乱码问题可进行第4步的配置