在写一个注册用户协议的时候遇到一个问题就是我在数据库中把注册内容设置成VARCHAR类型,大小为2000,可是在把内容加到数据库的时候会不到1000个字的时候就加不到数据库了这个问题该怎么解决>???

解决方案 »

  1.   

    这个和你数据库创建时选择的编码方式有关,比如,UTF8编码一个汉字需要4个字节,你的varchar类型的2000其实只能存500个汉字,ok?
      

  2.   

    在数据库驱动中加上内码值就行了,如我用的是MYSQL数据库,DRIVERSTR如下:
    private String dataBase = "jdbc:mysql://localhost/oa?user=root&useUnicode=true&characterEncoding=GBK";
      

  3.   

    1.先查一下你数据库的编码是什么
    2.修改你的java源代码,使得你的String变量的编码方式和DB的一样
      

  4.   

    varchar(2000)根据数据库编码的不同存入的数据量也不太一样,如果设置正确,varchar(2000)是应该存2000字符,而不是2000字节,就是说varchar(2000)可以存入2000个汉字+字母。你没测试一下到底你的表里存入了多少字符?你上边贴的那段,每段结尾有一个换行,也是一个字符你用的是什么数据库?另外,UTF8的汉字编码是变长的,而且最长3个字节。
      

  5.   

    我觉得可能是字符编码的不同所造成的,SQLSEVER2000中的varchar是以asc码为准则的。而汉字的编码有多种方式。比如UTF8,unicode  要注意这些区别