我已经在获取数据前加上了  request.setCharacterEncoding("utf-8");任然应为乱码而提交失败
update studentinfo set code=17905310,name='é????????',sex='??·',classcode=17905314,pro='è????????',age=18 where code='17905310'com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'sex' at row 1

解决方案 »

  1.   

    mysql对应表的字符集是 utf-8吗?
    你先改成用参数化看是否有问题?
      

  2.   


    我之前搞错了,是java获取jsp表单传入的值的时候会乱码,而且我已经加了request.setCharacterEncoding("utf-8");但还是不行,请问怎么解决。数据库的类型是utf-8
      

  3.   

    show create table 表名,可以看到使用的是何种编码,如gbk utf8 latin
    不过你的代码报错Data too long for column 'sex' at row 1,是不是超过sex字段长度了
      

  4.   

    是get请求还是post,get请求不设置的话这个是无效的。
      

  5.   

    是post
      

  6.   

    CREATE TABLE `studentinfo` (
      `code` int(11) NOT NULL,
      `name` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
      `sex` varchar(2) COLLATE utf8_unicode_ci NOT NULL,
      `age` int(11) NOT NULL,
      `pro` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
      `classcode` int(11) NOT NULL,
      `pwd` varchar(18) COLLATE utf8_unicode_ci NOT NULL DEFAULT '123456',
      PRIMARY KEY (`code`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
    结果是这个,因为乱码所以长度超过了