日期:2014-05-18  浏览次数:20751 次

还是一个中文显示乱码的问题
package   message;
import   java.sql.*;
public   class   Db{
Connection   conn;
User   user;
public   static   String   trans(String   chi)
{
                              String   result   =   null;
                              byte   temp   [];
                              try
                              {
                                              temp=chi.getBytes( "iso-8859-1 ");
                                            result   =   new   String(temp);
                                }
                                catch(Exception   e)
                                {
                                                e.printStackTrace();
                                }
return   result;
}
public   Db(){
try{
Class.forName( "com.microsoft.jdbc.sqlserver.SQLServerDriver ");
conn=DriverManager.getConnection( "jdbc:microsoft:sqlserver://localhost:1433;databaseName=Test ", "Test ", "Test ");

}catch(Exception   e){
e.printStackTrace();
}
}
public   void   setUser(User   user){
this.user=user;
}
public   void   insert(){
try{
PreparedStatement   pstmt=conn.prepareStatement( "insert   into   user1   values(?,?) ");
pstmt.setString(1,trans(user.getName()));
pstmt.setString(2,user.getPassWord());

pstmt.executeUpdate();
conn.close();


}catch(Exception   e){
e.printStackTrace();
}
}
}
jsp调用该Javabean将说提交的数据插入数据库.还有一个User.java是封装了name和password数据.再上面的javabean中,插入数据库前,已经用getBytes( "iso-8859-1 ")重新编码过,为什么在数据库里还是乱码?还有,如果在数据库里是乱码,取出后一定是乱码?有办法解决吗?

------解决方案--------------------
你采用的是数据库预处理技术,但是在执行数据库插入操作的时候不能用预处理,如果用了预处理,插入的数据就会变成乱码,所有只有写成Statement stmt=conn.createStatement();
后面的我就不写了 相信你也会
执行插入操作的时候只能用一般的形式进行插入,在javabean里面也是一样
------解决方案--------------------
添加struts 代码过滤器。配置xml文件。。页面上的加一句 <meta http-equiv= "Content-Type " content= "text/html; charset=GBK ">