1.  转码方式:       
String trans(String chi)
        {
               String result = "";
             
               try
               {
                      result = new String(chi.getBytes("ISO8859_1"),"gb2312");
                }
                catch(UnsupportedEncodingException e)
                {
                        System.out.println (e.toString());
                }
return result;
        }
2:这些东西
<%
request.setCharacterEncoding("GBK"); 
%>或者
<%@ page contentType="text/html;charset=gb2312"%>
问题,1.从jsp直接往数据库存入中文数据,oracle里为乱码?如何解决?
2。存入数据库的是中文,jsp取出的是乱码。如何解决?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【zhizhuo89】截止到2008-07-10 13:13:01的历史汇总数据(不包括此帖):
    发帖的总数量:11                       发帖的总分数:160                      每贴平均分数:14                       
    回帖的总数量:13                       得分贴总数量:1                        回帖的得分率:7%                       
    结贴的总数量:10                       结贴的总分数:140                      
    无满意结贴数:3                        无满意结贴分:60                       
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:90.91 %               结分的百分比:87.50 %                  
    无满意结贴率:30.00 %               无满意结分率:42.86 %                  
    值得尊敬
      

  2.   

    package com.jspdev.register;
    import javax.sql.*;
    import java.sql.*;
    import java.io.*;
    import java.util.*;
    public class UserRegist
    {
           UserInfo userInfo;
    private Connection con;

    //获得数据库连接。
    public UserRegist()
    {
      String CLASSFORNAME="oracle.jdbc.driver.OracleDriver";
        String SERVANDDB="jdbc:oracle:thin:@127.0.0.1:1521:prince";
        String USER="prince";
        String PWD="prince"; 
        try
        {
        
         Class.forName(CLASSFORNAME);
    con = DriverManager.getConnection(SERVANDDB,USER,PWD);
    }
    catch(Exception e)
    {
    e.printStackTrace();
    }
    }
    //设置待注册的用户信息。
    public void setUserInfo(UserInfo userInfo)
    {
    this.userInfo=userInfo;
    }

             String trans(String chi)
            {
                   String result = "";
                 
                   try
                   {
                          result = new String(chi.getBytes("ISO8859_1"),"gb2312");
                    }
                    catch(UnsupportedEncodingException e)
                    {
                            System.out.println (e.toString());
                    }
    return result;
            }
    //进行注册
    public void regist()throws Exception
    {

    try
    {
    PreparedStatement pstmt=con.prepareStatement("insert into user_Info values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
    pstmt.setString(1,trans(userInfo.getUserid()));
    pstmt.setString(2,trans(userInfo.getName()));
    pstmt.setString(3,trans(userInfo.getPhone()));
    pstmt.setString(4,trans(userInfo.getStreet()));
    pstmt.setString(5,trans(userInfo.getState()));
    pstmt.setString(7,trans(userInfo.getCity()));
    pstmt.setString(6,trans(userInfo.getZipCode()));
    pstmt.setString(8,trans(userInfo.getEmail()));
    pstmt.setString(9,trans(userInfo.getCardNumber()));
    pstmt.setInt(10,userInfo.getCardType());
    pstmt.setInt(11,0);
    pstmt.setDate(12,new java.sql.Date(new java.util.Date().getTime()));
    pstmt.setInt(13,1);
    pstmt.setInt(14,0);
    pstmt.setString(15,trans(userInfo.getFanvcategory()));
    pstmt.setString(16,trans(userInfo.getPassword()));
                          try 
    {
    pstmt.executeUpdate();

    catch(Exception e) 
    {
    }

    con.close();

    }
    catch(Exception e)
    {
    e.printStackTrace();
    throw e;
    }
    }
    }这样可以吗,有什么问题吗,我去掉tarns(),可以写入数据库,但数据库是乱码。但加上trans(),无法连接到数据库。
      

  3.   

    另:tomcat5.5和oracle9i平台,oracle的NLS_LANG的值是SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      

  4.   

    jsp文件的编码,数据库的编码,还有jsp页面设置的编码,这三个一至就可以了,
      

  5.   

    问题已经解决,但比较麻烦。高手能否给个最佳方案。关于oracle与jsp之间的。谢谢。好结贴!