今天遇到一个乱码问题,不知是什么原因,我向数据库中插入一条记录后,再取出,若是中文,得到的就是乱码,请大伙帮帮忙...
------------------
package w113.conn;import java.sql.*;public class UseExecuteUpdate { public static void main(String[] args) 
{
String url = "jdbc:mysql://localhost/sql_test";
String userName = "root";
String passWord = "w113";
String sql = null;

try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e)
{
e.printStackTrace();
}

try
{
Connection conn = DriverManager.getConnection(url,userName,passWord);
Statement stmt = conn.createStatement(); sql = "insert into student values('17','张三','hubei','2054-07-30')";
int affectedRowCount = stmt.executeUpdate(sql);
System.out.println("受插入操作影响的数据行数为:" + affectedRowCount);

sql = "select * from student where stu_id = '17'";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
{
String id = rs.getString(1);
String name = rs.getString(2);
String address = rs.getString(3);

System.out.println(id + " " + name + " " +address);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
---------------------
我看到的结果:受插入操作影响的数据行数为:1
17 ?? hubei

解决方案 »

  1.   

    存储和取出的时候都
    用String.getByte("iso8859-1")转换
      

  2.   

    取代码的时候转换下就是public String getString(String str){
       return new String(str, "GB2312"); 
    }
      

  3.   

    存的时候用 s = new String(s.getBytes(),"ISO-8859-1");
    取的时候用 s = new String(s.getBytes("ISO-8859-1");
      

  4.   

    试试我的:
    import java.sql.*;public class mysqltest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String url = "jdbc:mysql://192.168.0.222/";// 主机名和端口 
    String login = "test";// 登录名 
    String password = "test";// 密码  try { 
      Class.forName("com.mysql.jdbc.Driver");
      Connection connection = DriverManager.getConnection(url,login,password); 
      //得到数据库驱动程序版本     DatabaseMetaData conMD = connection.getMetaData(); 
       System.out.println("Driver Name:\t" + conMD.getDriverName()); 
       System.out.println("Driver Version:\t" + conMD.getDriverVersion()); 
      //选择数据库 
      connection.setCatalog( "jtest"); 
          //创建Statement 
      Statement st = connection.createStatement();
      //插数据
      String sql2=new String("INSERT INTO test VALUES('测试',20)".getBytes("GBK"),"ISO8859_1"); 
      st.executeUpdate(sql2); 
      //执行查询 
      ResultSet rs = st.executeQuery("SELECT * FROM test"); 
      //取得结果,输出到屏幕 
      String x;
      while (rs.next()){ 
         for(int j=1; j<=rs.getMetaData().getColumnCount(); j++){
          x=new String((rs.getString(j)).getBytes("ISO8859_1"),"GBK"); 
          System.out.print( x+"\t"); 
         } 
      
       System.out.println(); 
      }    //关闭对象 
      st.close(); 
        connection.close(); 
      } catch(Exception e) { 
        System.out.println("SQL Error:"+e.getMessage());
      }   }
    }