首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

編碼問題解决思路

2012-02-01 
編碼問題JSP:%@pagelanguage java pageEncoding BIG5 %%@tagliburi http://struts.apache.org/

編碼問題
JSP:
<%@   page   language= "java "   pageEncoding= "BIG5 "%>
<%@   taglib   uri= "http://struts.apache.org/tags-bean "   prefix= "bean "%>  
<%@   taglib   uri= "http://struts.apache.org/tags-html "   prefix= "html "%>
<%@   taglib   uri= "http://java.sun.com/jsp/jstl/core "     prefix= "c "%>
 
<html>  
<head>
<title> JSP   for   InputForm   form </title>
</head>
<body>
<html:form   action= "/input ">
data   :   <html:text   property= "data "/> <html:errors   property= "data "/> <br/>
<html:submit/> <html:cancel/>
</html:form>
<c:out   value= "${data} "/>
</body>
</html>
FromBean:

package   com.pan.struts.form;

import   javax.servlet.http.HttpServletRequest;
import   org.apache.struts.action.ActionErrors;
import   org.apache.struts.action.ActionForm;
import   org.apache.struts.action.ActionMapping;

/**  
  *   MyEclipse   Struts
  *   Creation   date:   09-14-2007
  *  
  *   XDoclet   definition:
  *   @struts.form   name= "input "
  */
public   class   InputForm   extends   ActionForm   {
/*
  *   Generated   fields
  */

/**   data   property   */
private   String   data;

/*
  *   Generated   Methods
  */

/**  
  *   Method   validate
  *   @param   mapping
  *   @param   request
  *   @return   ActionErrors
  */
public   ActionErrors   validate(ActionMapping   mapping,
HttpServletRequest   request)   {
//   TODO   Auto-generated   method   stub
return   null;
}

/**  
  *   Method   reset
  *   @param   mapping
  *   @param   request
  */
public   void   reset(ActionMapping   mapping,   HttpServletRequest   request)   {
//   TODO   Auto-generated   method   stub
}

/**  
  *   Returns   the   data.
  *   @return   String
  */
public   String   getData()   {
return   data;
}

/**  
  *   Set   the   data.
  *   @param   data   The   data   to   set
  */
public   void   setData(String   data)   {
this.data   =   data;
}
}

Action:
mport   javax.servlet.http.HttpServletRequest;
import   javax.servlet.http.HttpServletResponse;
import   org.apache.struts.action.Action;
import   org.apache.struts.action.ActionForm;
import   org.apache.struts.action.ActionForward;
import   org.apache.struts.action.ActionMapping;
import   com.pan.struts.form.InputForm;

/**  
  *   MyEclipse   Struts
  *   Creation   date:   09-14-2007


  *  
  *   XDoclet   definition:
  *   @struts.action   path= "/input "   name= "inputForm "   input= "/form/input.jsp "   scope= "request "   validate= "true "
  */
public   class   InputAction   extends   Action   {
/*
  *   Generated   Methods
  */

/**  
  *   Method   execute
  *   @param   mapping
  *   @param   form
  *   @param   request
  *   @param   response
  *   @return   ActionForward
  */
public   ActionForward   execute(ActionMapping   mapping,   ActionForm   form,
HttpServletRequest   request,   HttpServletResponse   response)   {
InputForm   input   =   (InputForm)   form;//   TODO   Auto-generated   method   stub

String   data   =   input.getData();

request.setAttribute( "data ",data);

return   mapping.findForward( "forward ");
}
}

我在JSP的文本框輸入簡體中文,繁體中文,提交請求后顯示都是亂碼,請高手處理!


[解决办法]
你又没有进行编码处理,建议采用 POST 请求提交表单,这样比较好解决。

在 Action 中需要转码

String data = new String(input.getData().getBytes( "iso-8859-1 "), "big5 ");

建议配置一个过滤器,否则的话比较麻烦。

若是采用缺省的 GET 请求的话,需要改 URI 编码(改 Tomcat 的 server.xml)、提交时的字符编码,还且在接收参数时还要解码,挺烦的。

热点排行