我用的是jsp + tomcat + oracle9,用rs.getString("字段名")取数据库的内容,字段类型是varchar的可以正常取出中文,类型是char的取出时乱码,请高手帮忙指导下,万分感谢

解决方案 »

  1.   

    在数据库连接 上面 设置:eg:
    jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=UTF-8   希望对你有帮助
      

  2.   


    我看到网上都这么说,可是我的数据库连接是下面这样的,这个设置应该加在哪?
    <%@ page import="java.sql.*"%> <%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@192.2.2.2:1521:XXX"; String user="******8"; String password="******8"; Connection conn= DriverManager.getConnection(url,user,password); 
    Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
      

  3.   

    1,编码一致
    2,char长度是受限制的,是不是正好读到中文字符的一部分了,没有读全
      

  4.   

    在 String url="jdbc:oracle:thin:@192.2.2.2:1521:XXX"设置 类似jdbc:mysql://localhost:3306/shop?useUnicode=true&amp;amp;characterEncoding=UTF-8 
      

  5.   

    数据库里的数据时乱码不?
    连接数据库是否指定了编码?
    请求的时候是否指定了编码过滤器或request response是否设置了charactorcoding?
    页面显示是否指定了对应的编码?
      

  6.   

    我链接数据库和取数据均用的gb2312编码啊,至于为什么汉字用char字段,因为我是用别人的表,具体为啥我也不知道啊,我需要的是把他数据库里的数据取出来
      

  7.   


    String temp = new String(从数据库中取出的数据.getBytes("ISO-8859-1"),"GB2312");
    或者
    String temp = new String(从数据库中取出的数据.getBytes("utf8"),"GB2312");
    或者
    String temp = new String(从数据库中取出的数据.getBytes(),"GB2312");
    转换编码试试.
      

  8.   

    我觉得 环境里 统一 全用 UTF-8
      

  9.   

    现在问题解决了,我把原表做了个视图,将char字段均trim()一下,然后就能正常取中文了,这种方法有点曲线救国的意思,但是总归好用,发上来分享下,希望对别人有用!(我这个是不需要修改数据,所以直接取视图内容就可以,如果需要修改数据,可以先取主键再更新,只是个人见解,觉得麻烦可以另寻方法,呵呵)