代码如下public void saveUserInfo(){
      
      String str = "点对点飞飞飞";
      String newStr = "";
try {
byte[] b1 = str.getBytes("GBK");

newStr = new String(b1,"ISO-8859-1");   
System.out.println("========================"+newStr);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
      UserInfoVo vo1 = new UserInfoVo();
          vo1.setLoginCode("1111");
          vo1.setName(newStr);
          vo1.setPassword("1111");
          UserInfoVo vo2 = new UserInfoVo();
          vo2.setLoginCode("1111");
          vo2.setName("dddd");
          vo2.setPassword("1111");
          getHibernateTemplate().save(vo1);
      getHibernateTemplate().save(vo2);     }为什么上面的代码,要进行try处理后插入数据库才不是乱码,数据库是sqlserver2000  
又要怎么解决呢

解决方案 »

  1.   

    try语句块将字符串的编码格式进行转换,使其与数据库编码一致,不一致会出现乱码
      

  2.   

    String str = "点对点飞飞飞"; 
    String newStr= new  String(str.getBytes("iso-8859-1"),"GBK");
    试试
      

  3.   

    和hibernate没关系。你打印
    newStr = new String(b1,"ISO-8859-1");  
    这里看看是否newStr 也是乱码
      

  4.   

    建议你写个fliter,过滤就行了,然后在web容器里改server.xml,
      <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
       URIEncoding="gbk"
                   redirectPort="8443" />
    这是Tomcat的  URIEncoding="gbk"这句是重点,
    过滤器中写上:request.setCharacterEncoding("gbk");    
              filterChain.doFilter(request, response);  
    然后在web.xml中配置需要过滤的页面就行了这种方法一劳永逸,写东西就不用管乱码问题了!
      

  5.   

    我不是用的web  我直接用main方法测试的
      

  6.   


    在main测试也一样在这里加的断点看看byte[] b1 = str.getBytes("GBK"); newStr = new String(b1,"ISO-8859-1");