import 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.DynaActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import baseclass.*;
import javax.servlet.ServletContext;
import javax.sql.DataSource;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public  class LoginAction extends Action{

public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception
{
request.setCharacterEncoding("ISO-8859-1");
DynaActionForm dyform=(DynaActionForm)form;
String name=(String)dyform.get("username");
String psw=(String)dyform.get("password");
DataSource datasource=getDataSource(request);
baseclass dbuser=new baseclass(datasource);
String a="望闻问切";    //测试字符串
System.out.println(a);  //源码输出,乱码!!!
String ad=xx.getStr8859(a)  //转换为ISO-8859-1编码
System.out.println("8859="+ad););//ISO-8859-1输出,还是乱码
String c1=xx.getStrUTF(a);//转换为UTF-8编码
System.out.println("UTF="+c1);)//UTF-8输出,还是乱码
return mapping.findForward("print");
}
}
如何在action中正确输出,字符串a啊!!!!

解决方案 »

  1.   

    做一个过滤器的.JAVA文件,在XML中配置
    这个源程序网上有很多,去搜一下
      

  2.   

    采用过滤器吧,省得每个文件都设置
    在tomcat的webapps\servlets-examples\WEB-INF\classes\filters目录下有个SetCharacterEncodingFilter.java,把这个复制出来
    在你项目的web.xml中加以下的代码:
     <filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>com.aa.filter.SetCharacterEncodingFilter</filter-class>(这里是SetCharacterEncodingFilter.java的路径)
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>(这里要和jsp页面中的编码 统一)
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  3.   

    <filter-class>com.aa.filter.SetCharacterEncodingFilter</filter-class>(这里是SetCharacterEncodingFilter.java的路径)
    -----------------------------------------------------------------------------
    com.aa.filter.SetCharacterEncodingFilter是SetCharacterEncodingFilter.java路径??
    是SetCharacterEncodingFilter.class路径吧!!!!!,请教
      

  4.   

    不知道我有没有理解对你的意思,你是说在控制台里输出的就是乱码是吧。你把request.setCharacterEncoding("ISO-8859-1");改为request.setCharacterEncoding("GBK");试一下。这应该是编码设置的问题,因为这个A是你在ACTION里设的值。
      

  5.   

    String a="望闻问切";    //测试字符串
    把你的代码保存下,然后在别的编辑器里打开
    看看String a="望闻问切"这几个字是不是乱码!
      

  6.   

    在程序里加上这句试试
     request.setCharacterEncoding("gb2312");
      

  7.   

    to:esprit0318()
    -----------------------------------------------------------
    是jcreator编辑器,如何设置默认编码,我正常安装后没动啊!