请教下
我做了一个登陆页面,有用户名,密码,角色这几个field,角色是一个下拉列表,下拉列列表的内容是从数据库读取的,
当列表内容是英文时可以正常显示,
但如果是中文,下拉列表就为空白了,但是后台能够正常打印出内容,另外我查看源文件发现无论列表内容是中文还是英文,“户名,密码,角色”这些字都是“用户”这样的编码,“户名,密码,角色”这几个词也是从数据库读取的,在页面上“户名,密码,角色”这几个词能够正常显示,代码是servlet,加了过滤器,设置的字符编码为"UTF-8",请问为什么中文时下拉列表就为空的呢?

解决方案 »

  1.   

    如果JSP是<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">开头请改为<%@ page contentType="text/html; charset=UTF-8" language="java"%>
      

  2.   

    jsp中再添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      

  3.   

    加了啊
    <head>
    <title>
    &#30331;&#24405;
    </title>
    <link href="/compiere/standard.css" type="text/css" rel="stylesheet"/>
    <script type="text/javascript" src="/compiere/standard.js" language="JavaScript1.2"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="description" content="Compiere HTML UI"/>
    <link href="window.css" type="text/css" rel="stylesheet"/>
    <script type="text/javascript" src="window.js" language="JavaScript1.2"></script>
    </head>

    可还是空白的
      

  4.   

    <%@ page contentType="text/html; charset=UTF-8" language="java"%> 
    <head> 
    <title> 
    &#30331;&#24405; 
    </title> 
    <link href="/compiere/standard.css" type="text/css" rel="stylesheet"/> 
    <script type="text/javascript" src="/compiere/standard.js" language="JavaScript1.2"> </script> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
    <meta name="description" content="Compiere HTML UI"/> 
    <link href="window.css" type="text/css" rel="stylesheet"/> 
    <script type="text/javascript" src="window.js" language="JavaScript1.2"> </script> 
    </head> 
      

  5.   

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
    + request.getServerName() + ":" + request.getServerPort()
    + path + "/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript">这个事最一般的,呵呵,虽然没有用过你那个,不过一般都是一样的吧,主要是的是楼主要调试,在哪里出现的问题就到哪里去找原因,可能不是说你传到后台是这样的编码,是找找他们都是些什么编码格式,比如你看看你的环境,如果用myeclipse的话,看看是否用的是ISO,或者其他的,
    你从数据库当中找来的都是编号,传到后台都应该是编号而已,你要是传回来的是用户名,那这个首先就有点那个了,当然这个不是问题.问题是,你传回去的,仍然是那些参数,你需要设置断点试试,从你的Servlet中得到的内容换不同的方式打印也好,自己查看也好,看是什么格式的.就可以了
      

  6.   

    不是jsp页面,是servlet代码,通过下面代码实现的html.java的构造函数
    public html ()
    {
    setElementType ("html");
    setCase (LOWERCASE);
    setAttributeQuote (true);
    addAttribute ("xmlns", "http://www.w3.org/1999/xhtml");
    /**
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    **/
    }
    另一个方法里的部分
    m_html.addElement(m_head);
    m_html.addElement(m_body);
    m_body.addElement(new a().setName("top"));
    if (title != null)
    m_head.addElement(new title(title));
    if (plain)
    return;

    // css, js
    if (javaClient)
    m_head.addElement(new link("http://www.compiere.org/standard.css", link.REL_STYLESHEET, link.TYPE_CSS));
    else
    {
    m_head.addElement(new link(WebEnv.getStylesheetURL(), link.REL_STYLESHEET, link.TYPE_CSS));
    m_head.addElement(new script((Element)null, WebEnv.getBaseDirectory("standard.js")));
    }
    m_head.addElement(new meta().setHttpEquiv("Content-Type", "text/html; charset=UTF-8"));
    m_head.addElement(new meta().setName("description", "Compiere HTML UI"));
      

  7.   

    服务器用的是什么?看看服务器软件的编码是什么~
    我以前用tomcat的时候就出现过这种问题,百思不得其解..后来才发现是这个问题
      

  8.   

    Servlet里和Jsp里一个道理啊~~~
    楼主再设置setCharacterEncoding("UTF-8") 试试
      

  9.   

    一般的过滤器只对post提交有用哦·
     
      

  10.   

    使用过滤没问题的
    你的代码怎么写的啊
    ----------------------------
    http://www.shawnlin.cn
      

  11.   

    中文问题:
    1.如果想提高可移植性,还是去查询一次数据比较好2.如果是tomcat服务器的话,方法如下:
             a.页面上加入pageEncoding="utf-8",JS提交的话可以加上encodeURI(scolCode.value)方法
             b.后台用response.setContentType("text/html;charset=utf-8");//如果有过滤器的话这里可以不用
             c.使用str = new String(str.getBytes("iso-8859-1"), "utf-8").trim();
    3.如果是websphere服务器的话,方法和tomcat的类似,但是第c部就可以不用再转了这些都是我在开发的时候测试出来的我基本做企业内部网站所以访问量不是什么大问题。。基本上都是多查询一次数据库,而且我开发是用tomcat,可客户那是用websphere的