<%@ page import="java.util.Date, java.text.SimpleDateFormat" %>
<%@ page import="com.wgh.*" %>
<%@ page contentType="text/html;charset=gb2312" %>
<% request.setCharacterEncoding("gb2312"); %>
<jsp:useBean id="dbconn" scope="application" class="com.am.OpenDB"/>
<jsp:useBean id="register" class="com.am.register"/>
<jsp:useBean id="str" class="com.wgh.DB.chStr"/>
<% //获取用户名
register.userName=request.getParameter("txtusername");
register.setConnection(dbconn.getConnection());
//判断用户名是否已经存在
if(register.isExist()){
 System.out.println("该用户已经存在");
 }
 else {
  //用户不存在,获取用户的其他注册信息
  register.userPassword=request.getParameter("txtuserPassword");
  register.name=request.getParameter("txtname");
  register.company=request.getParameter("txtcompany");
  register.depart=request.getParameter("txtdepart");
  register.email=request.getParameter("txtemail");
  SimpleDateFormat dateFormatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  register.createDatetime=dateFormatter.format(new java.util.Date());
  register.myfields="0";
  String[] myfields=request.getParameterValues("txtmyfields");
  if(myfields!=null) {
   for(int i=0;i<myfields.length;i++){
    if(myfields[i]!="") {
     register.myfields=register.myfields+","+myfields[i];
    }
   }
  }
  register.myfields=register.myfields+",0";
  register.systemRole="1";
  register.tag=0;
  //保存注册信息
  register.addUser();
  }
%>
<html>
<head>
<title>刊物文章管理系统</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<p>注册成功!</p>
<p>用户名为:
<%=
 str.chStr(register.userName)//显示的是问号
%>
</p>
<p>请记住用户名密码,要登录请</p>
<form action="index.jsp" method="post">
<input type="submit" value="返回首页">
</form>
</body>
</html>

解决方案 »

  1.   

    不懂jsp……可是从我.net遇到相关问题的经验来说,request提交的字符串里要加个JavaScript的 encodeURI。一般都是编码问题,不知道纯字母正常不
          register.userPassword=request.getParameter("txtuserPassword");
          register.name=request.getParameter("txtname");
          register.company=request.getParameter("txtcompany");
          register.depart=request.getParameter("txtdepart");
          register.email=request.getParameter("txtemail");
    这里的request不知道和我理解的request一样不<%@ page contentType="text/html;charset=gb2312" %>
    <% request.setCharacterEncoding("gb2312"); %>
    这些地方都注明了简体中文,我觉得最好就是用utf-8,国际通用,只是个建议,跟你的问题可能没关系
      

  2.   

    加上这一句:
    System.Web.HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(string a ))
      

  3.   

    register.name=  new String(request.getParameter("txtname").getBytes("ISO-8859"),"gb2312")
      

  4.   


    chStr str = new chStr();
    register.name = str.chStr(request.getParameter("txtname"));
      

  5.   

    EncodingFilter.java//EncodingFilter.java
    package com.jspdev.ch8;import javax.servlet.FilterChain;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.ServletException;
    import javax.servlet.FilterConfig;public class EncodingFilter implements Filter
    {
        protected FilterConfig filterConfig;
        private String targetEncoding = "gb2312";
        
        /**
         *初始化过滤器,和一般的Servlet一样,它也可以获得初始参数。
         */
        public void init(FilterConfig config) throws ServletException {
            this.filterConfig = config;
            this.targetEncoding = config.getInitParameter("encoding");
        }
        
        /**
          *进行过滤处理,这个方法最重要,所有过滤处理的代码都在此实现。
          */
         public  void doFilter(ServletRequest srequest, ServletResponse  sresponse, FilterChain chain)
            throws IOException, ServletException {
            // System.out.println("使用以下方法对请求进行编码:encoding="+targetEncoding);
                
            HttpServletRequest request = (HttpServletRequest)srequest;
            request.setCharacterEncoding(targetEncoding);
            // 把处理权发送到下一个
           chain.doFilter(srequest,sresponse);  
        }    public void setFilterConfig(final FilterConfig filterConfig)
    {
    this.filterConfig=filterConfig;
    }
        
        //销毁过滤器
    public void destroy()
    {
    this.filterConfig=null;
    }
    }
      

  6.   

    过滤器不是要过滤SERVLET? JAVABEAN也可以过滤的?
    str.chStr(register.userName),,,,,
    JAVABEAN+JSP,我没用过多少,不是很熟,不过为什么还要这样取得呢?
    会不会是数据库里乱码了.如果是MYSQL很有可能.
    <%    //获取用户名
        register.userName=request.getParameter("txtusername");
        register.setConnection(dbconn.getConnection());
        //判断用户名是否已经存在
        if(register.isExist()){
         System.out.println("该用户已经存在");
         }
    这里打印看看是什么东西,有没有乱码.
      

  7.   

    在web.xml中配置过滤器: <filter>
         <filter-name>encoding</filter-name> 
         <filter-class>com.jspdev.ch8.EncodingFilter</filter-class>
         <init-param>
                 <param-name>encoding</param-name>
                 <param-value>gb2312</param-value>
         </init-param>
        </filter>
           
        <filter-mapping> 
           <filter-name>encoding</filter-name> 
           <url-pattern>/*</url-pattern>  
         </filter-mapping>
      

  8.   

    文本数据就request.setCharacterEncoding()  遇到流 response.setCharacterEncoding()
      

  9.   

    mysql??
    看下数据库里存的字段值是不是"??",mysql对中文的支持很差建议你在建表的时候就设置字符编码DEFAULT CHARSET=GBK;
      

  10.   

    这里“该用户已经存在”能在tomcat的命令提示符下显示中文,那乱码是什么原因呢