第一次修改有问题是因为IE不知当前当前页面的编码方式,用了西文,当第二次用同样页面的,会自动纠正一次,所以以后都不会出现乱码问题了.<%@ page contentType="text/html;charset=GB2312" %>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
以上两条若解决不了,可用以下函数处理一次先:
public String FormatConvert(String from)
{   try{
       byte[] b = from.getBytes("iso8859-1");
       return new String(b,"gb2312");
    }catch(Exception e){}
    return null;
}
 good luck!

解决方案 »

  1.   

    如果strTemp =db.getString("putname");
    得到的是中文,试一下<a href="orther.jsp?strTemp=<%=URLEncoder.encode(strTemp)%>"></a>
    引入<%@page import="java.net.*"%>
      

  2.   

    <a href="orther.jsp?strTemp=<%=java.net.URLEncoder.encode(strTemp)%>"></a>
      

  3.   

    多谢大家的意见,但问题还是没有解决在传递参数的时候 POST传递是怎么样写
      

  4.   

    用form的post方法传递参数一般用在“提交”情况下
    你换成TOMCAT4试试
      

  5.   

    <form action="XX.jsp" method="post">
      

  6.   

    不知道你的数据库的字符集是什么?你设置了contentType么??为了在多系统环境下使用,你必须将contentType设置为gb2312,然后使out.print出来的东西也是使用gb2312编码的。。这样就能够正确显示。
      

  7.   

    谢谢各位高手指点,可是问题还是没有解决,数据库是SYBASE,系统是SUN SOLARIS,我已经写成我GB2312,从数据库里面读出的中文没有问题!奇怪的问题
      

  8.   

    你使用的应用服务器是什么?
    如果是WebSphere就不需要考虑这些问题了。
      

  9.   

    使用Tomcat4的最新版本,如果还有问题,可以到Tomcat的bug数据库里查一下。
      

  10.   

    数据库Oracle9i,OS Sun Solaris 9,Tomcat 4.0.1,没问题。中文格式为UTF-8。
      

  11.   

    实在实在不行的话,干脆你传参数的时候把所有值用base64编过码以后再传好了
      

  12.   

    得到提交的值可以这样写,试试:
    String s = 
    new String(request.getParameter("s").getBytes("ISO-8859-1"),
    "GB2312");
      

  13.   

    我估计在你的问题上,born20c(人工智能) 这么做是可行的,因为参数传递的时候,服务器将编码方式转换为操作系统的编码方式(你得察看一下操作系统的编码方式,就是LANG的值)。。
      

  14.   

    谢谢各位,我的WEB SERVER是TOMCAT3.3,系统的LANG为zh_CN,那么在系统中怎么,怎么来改字符集。
      

  15.   

    public String zh(String ss){
       
          return new String(ss.getBytes("ISO8859_1"));
        
        }
      

  16.   

    启动tomcat前要设置系统的区域和代码页,我用的linux:
    export LC_ALL=zh_CN.gb2312
    export LANG=zh_CN.gb2312针对要处理中文的jsp页面,设置java使用的unicode代码页
    <%@ page contentType="text/html;charset=GB2312" %>针对ie显示,指定使用中文现实文字内容
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">从url或post取得参数后转换为中文页的unicode:
    String a = request.Parameter("aaa");
    byte[] tempb = a.getBytes("ISO8859_1");
    a = new String(tempb);就这些了
      

  17.   

    //Unicode字符串转化为GB2312
    public String valueOf(String Source) throws Exception
    {
    if(Source == null)
    return "";        byte[] temp  = Source.getBytes("8859_1"); 
            String query = new String(temp, "GB2312");
    return query;
    }
    /*
    使用时:
    out.print(对象名.valueOf(strTemp));
    就可以了,保证没有问题,我用过N次了!
    */
      

  18.   

    如果是sybase ,在得到connection的时候在Properity记入如下属性<properity name="charset" value="eucgb"/>
      

  19.   

    哈哈,这个问题其实不复杂,要多做几次试验。找到配合的方式。
    jsp是在你的app svr的平台上编译的,编译用的encoding是javac 自动取平台字符集的。
    其次,数据库的字符集编码也很重要,如果也是中文的,数据表里的存储也是按照中文字符集的。
    第三,jsp里的<% page charset="" %>也要正确设置。
    只有这三个字符集是一致的,才能正确显示。
    我通常的做法是,全部用西文字符集,在jsp中不需charset设置。
      

  20.   

    补充,如果不一致,你就需要加转码程序,只需要加一个地方。转码时,可以多试几次,如iso8859 to gb2312, gb2312 to iso8859, gbk to iso8859. 来回试几次,看可以不可以
      

  21.   

    如果还不成就用笨方法.
    把收到的String-->byte[] 然后把byte[]编码成特殊的stinrg 
    如-12|33|443|88|
    接收时再反着来,肯定没问题的.
      

  22.   

    如果你的中文问题还没解决的话,可以这样:把从地址栏传递的参数值放到session中就可以,如果有多个参数值则传递session变量数组,在地址栏只传递数组的下标就可以。
    我以前碰到的字符问题都是这样解决的。
      

  23.   

    顶部用code = 936
    表示是中国地区的编码
      

  24.   

    janssenkm(^_^100),你好!
    是在jsp页面的顶部写上 code=936 吗?怎么写啊,麻烦给予实例。
    谢谢!!
      

  25.   

    http://www-900.ibm.com/developerWorks/cn/java/java_chinese/index.shtml
      

  26.   

    谢谢各位,本人后来换了TOMCAT4.0用简单的转换就搞定了,真是感谢各位的热心帮助