我想问问楼主,我的问题是“jsp往sqlserver库里面写入时,没有转化编码,现在数据库里是乱码,我怎么正确读出这些乱码呢”

解决方案 »

  1.   

    回复crashcar(difs),可能是你的数据库字符集设置与jsp不一致,如果sqlserver的操作系统是中文的,jsp中应转换成GBK后再写入数据库
      

  2.   

    搂主可以考虑用GBK,它兼容GB2312并且支持更多汉字。
    至于
      

  3.   

    回复disizhishou(第四只手) ,我如果用GBK,除常用字外,冷僻字还是不能正确转换,提示大致如下
    SQLState=42W04;ErrorCode=102;ErrorMessage=ASA Error -131;Syntax error
     near '喆' WHERE "zth"=1'
    错误的SQL语句是:UPDATE "zjgl_zt" SET "dwmc"='? WHERE "zth"=1
    正确的SQL语句是:UPDATE "zjgl_zt" SET "dwmc"='喆' WHERE "zth"=1
    好象在Java Servlet中只要转换包含有冷僻字的字符集,就会出错.所以我就将转换字符集的代码去掉
    了,为了使数据库的字符集与Servlet一致,所以将数据库的字符集设置为iso_1。这样虽然可以解决
    问题,但不知为什么用iso_1也能正确显示汉字,是不是JDBC或操作系统自动转换了,必须知道其原因
    才能放心的使用这种方案.
        希望继续与大家讨论。
      

  4.   

    我觉的是Servlet中的字符集转换有问题,可能是JDBC的原因,大家有合理的方案吗?
      

  5.   

    我以前也遇到过,不过往数据库写的时候不是乱码,输出的时候是.
    换成GBK,换成GBK就好了!
    可能输入--->数据库--->输出,这三者之间的字符集要统一才行!
      

  6.   

    将  contentType="text/html; charset=gb2312"
    换成contentType="text/html; charset=GBK"
    试试
      

  7.   

    换成GBK对于冷僻字可正常显示,但写入数据库时用sqlstr=new String(sqlstr.getBytes("ISO-8859-1"),"GBK");冷僻变为'?'号,不正确
      

  8.   

    回复singnet(山居中人) ,只要在执行写入数据的SQL语句之前,将SQL语句转换一下字符集就应该可以解决问题,但我提的问题还没有解决。
      

  9.   

    有一个问题我始终不明白,iso_1是支持拉丁文和西文的,为什么还能在IE浏览器正确显示汉字呢?是客户端系统或是JDBC自动进行了转换了吗?在此希望能与大家一同讨论。
      

  10.   

    是客户端系统或是JDBC自动进行了转换了吗?在此希望能与大家一同讨论。
      

  11.   

    是客户端的OS进行的转换,而并非JDBC转换的。IE用的设置其实就是操作系统的设置,如果你安的英文的OS,你的问题一样不能显示。