环境:简体中文WinXP SP2,系统默认语言是简体中文,源文件全都是UTF-8编码保存,页面的Charset/Encoding属性也都是UTF-8,还加了个SetCharacterEncodingFilter,初始参数也是UTF-8。Web容器用的是Apache Tomcat 5.5.16。IDE用的是Eclipse 3.1.2/MyEclipse 4.1.1,IDE选项里的所有关于编码的选项都改成了UTF-8。我试了SQL Server 2000(MS提供的驱动SP3版),乱码。无奈改用MySQL 5.0.18(MySQL官方网站提供的3.1.12版驱动),也是乱码,表的编码用默认/GBK/UTF8都不行,连接字符串加上?useUnicode=true&characterEncoding=GBK或?useUnicode=true&characterEncoding=UTF8也都不行。各位大侠来帮帮我这个菜鸟吧!

解决方案 »

  1.   

    试试先把字符串类型转化为gb2312
    例如有字符串a通过下面语句:
    a = new String(a.getBytes("8859_1"),"gb2312");
    然后再把a写入数据库
      

  2.   

    我加了SetCharacterEncodingFilter过滤器,还需要加什么过滤器吗?
      

  3.   

    /********************************
    函数功能:做编码转换入库(防止存入数据库中文乱码)
     *********************************/
    public String inStr(String str){
        if(str==null){
            str="";
        }
        else{
            try{
                str=(new String(str.getBytes("iso-8859-1"),"GB2312")).trim();
                str=str.replace('\'',(char)1);
            }catch (Exception e){
                System.out.println("inStr");
                System.out.println(e.getMessage());
            }
        }
        return str;
    }
      

  4.   

    谢谢各位,问题已解决。另外发现Resin服务器确实不需要转码,读写数据库都没有问题,这一点真是太好了。不过JSP上面的pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"都是要的,不然JSP会出现乱码,这样做我觉得比较规范,Resin果然是很好的Web服务器。Tomcat可以不用写contentType也不乱码。一点心得与菜鸟们分享。