记得在每个JSP页面的最开始加上
<%@page language="java" contentType="text/html;charset=GBK"%>
代码从jsp页面中的输入域中取数据时进行转码用如下语句
String tmpValue = request.getParameter(域名)
String value=new String(tmpValue.getBytes("ISO8859_1")

解决方案 »

  1.   

    要经过转码的。^_^
    <%@page language="java" contentType="text/html;charset=gb2312"%>
      

  2.   

    我的头文件设置是<%@page language="java" contentType="text/html;charset=gb2312"%>不过我的数据不是通过jsp页面转码存储进去的,而是直接从数据库文本输入。现在调用数据显示----唱片名称:???????????????????????¨??????????°à?????????°??这样的结果。不解。请多多指教
      

  3.   

    还有一个解决方法,不过是针对weblogic,就是在weblogic的xml配置文件中加上一行关于字符码的设置,加上这一行后,jsp不用做任何转码,中文问题自动消失。 我的同事已经实验成功。各位不妨到google上搜搜。
      实在不行就要自己在JAVABEAN或JSP写进行字符码的转换的程序了
      

  4.   

    String tmpValue = request.getParameter(域名)
    String value=new String(tmpValue.getBytes("ISO8859_1")remenber you should read the data from the database and then use the language for once but not two times.
    good luck boy!
      

  5.   

    把jsp表单数据存储到数据库要进行转码从数据库读取也要进行转换吗。现在的乱吗问题一直没有解决,苦恼死了。上面的方法我都尝试了一下,还是不可以。
      

  6.   

    用这个函数试试  
    public static String outDbString(String ss){
         String s2="";
         try{
             s2=new String(ss.getBytes("GB2312"),"ISO8859_1");
             }catch(Exception e){
                System.out.println(e.getMessage ());
             }
         return s2;
      }
      

  7.   

    Web乱码与字符集的理解小生最近学习Servlet和JSP处理中文时常常碰到乱码,所以在网上找了许多有关字符集方面的资料学习,但总觉得一知半懂,所以想得到前辈们指教,以下是我的理解:磁盘上件的存储形式:所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列.字符编码(encoding)就是把字符按照某种映射标准(字符集)转换成字节。例如打开一个空记事本,然后在记事本中写入"hello world"--〉另存为(默认的ASICC字符集)--->asc.txt , 这时asc.txt就以ASCII编码的字节序列存储在磁盘上,如果要读这个文件,也就是将这个字节序列按照原字符集转换成字符串(解码:decoding),所以处理好编码<=>字符集<=>解码就是关键.字符集就像棋盘,每个字符(棋子)用一个棋格(字节)映射。
    ISO8859:8位的字符集,0~0x7F仍与ASCII字符集保持兼容,大于0x7F的是各种拉丁字符或欧洲字符的扩展。
    GB2312: 8位的字符集,如果当前字节(8 bit)小于0X80,则仍当它为英文字符与(ASCII兼容);如果它大于等于0x80,则它和紧接着它的下一个字节构成一个汉字字符,这样,GB2312字符集可包含大约4000多个常用简体汉字和其他汉字中的特殊符号(如①㈠之类)。
    GBK:GB2312的扩展集,和GB2312兼容.
    Unicode: 16位的字符集,Unicode的主要目标是提供一个“通用字符集”。
    UTF-8: Unicode的使用、存储与传输,都极其浪费空间,所以在此基础上出现了UTF-8字符编码的规范,在UTF-8中,属于US-ASCII中的字符,仍用一个字节表示,且和US-ASCII兼容,编码其他的字符,则用1(大于0x7F部分)到3个字节. (编码中文用3个字节)
    JVM编译器使用系统默认的字符集encoding/decoding.我的系统为win2000Server 默认字符集为GBK。编译过程如下
    1.javac Test.java ===>编译器实际上执行了 javac -encoding GBK Test.java
    2.在类装载器中加载这个Test.class文件,编译器再用GBK字符集解读这个Test.class
    Java可以让你按自定义字符集编码你的文件,如下列Utf.java
    public class Utf {
      public static void main(String [] args) 
        throws Exception 
      {
        String s = "你好";
        byte[] bytelist = s.getBytes("UTF-8");
      }
    }
    ..
    javac Utf.java // 这时,在类文件Utf.class中,bytelist存储的是一块UTF-8编码"你好"的字节序列,而其他部分仍然是GBK编码的字节.
    现在再加上对这些字节解码的过程
    public class Utf {
      public static void main(String [] args) 
        throws Exception 
      {
        String s = "你好";
        byte[] bytelist = s.getBytes("UTF-8");
        //解码
        String decodingString = new String(bytelist,"UTF-8");
        //正确的读出这些UFT-8字符集编码的字节
        System.out.println(decodingString); 
      }
    }现在讲JSP,Servlet了.
    他们归根到底都是 xxx.class文件,所以我们抓住他们的编译器编码方式和上例 bytelist那样的字节序列就OK了.
    以下是一个 JSP-Servlet-java Bean - JDBC 的实例.
      JSP文件的编码解码过程如下(jsp引擎采用UTF-8 encoding/decoding):            JSP引擎(UTF-8)                         Servlet引擎(UTF-8)
      xxx.jsp -----------------> xxx$jsp.java(UTF-8) -----------------------> xxx.class
             
     1.在 xxx$jsp.java(UTF-8) ---> xxx.class 这一部分,Servlet编译器会正确的用 UTF-8来解读,所以我们可以不用管,
     2.而关键在xxx.jsp这里,我们应该告诉jsp引擎某个区域的字符串用GB2312或GBK、UTF编码.
      <%@ page pageEncoding="gb2312" %> 
     3.这样你所提交的表单实体数据就用gb2312编码了,数据提交到Servlet中,Servlet用gb2312来解读这些数据就可以正确的给bean了.
      //将接受到的数据以GB2312字符集进行编码
      req.setCharacterEncoding("GB2312");
      //输出的信息以GB2312字符集编码,如果数据主要由Bean处理,charset=GB2312要不要都无所谓
      res.setContentType("text/html;charset=GB2312"); 
      
      因为servlet解码使用ISO-8859-1字符集, 这里setCharacterEncoding("GB2312")完成的功能其实就是一个转码过程,如果传来一个表单数据为gb2312编码的"你好", 它处理的就是  
      byte[] bytelist = s.getByte("ISO-8859-1");
      s = new String(bytelist,"GB2312"); 
      
     
    完,思绪乱了~~^^