最近在上手学javaweb,根据书里的练习题要做一个雇员系统,其中有一项是用textarea输入雇员的简介,大概就是一个页面输入信息,然后通过submit传值到另一个页面用javabean 接收,接收方式是setProperties的自动设置,然后在数据库里更新信息。
然后最开始出现了类似Incorrect string value: '\xE6\xB1\x9F\xE5\xAE\x81...' for column ‘note' 的错误信息,所以我就尝试单独设置note,用iso8859-1解码再编码再设置,解码后就不再报错了,但是会出现乱码,而且不管我用任何编码方式都是乱码,并且其他text都没有乱码唯独textarea有。我尝试过GBK,UTF-8,重新用iso8859-1,甚至latin1都试过了还是乱码,我就佛了。
下面 是一些或许会有用的信息:数据库连接的url里相关信息是useUnicode=true&characterEncoding=GBK;request.setCharacterEncoding("GBK")或者UTF-8都试过,set和不set都试过,form是get和post都试过,JSP文件最上面那几个charset=UTF-8和=GBK都试过,数据库里character_set_client=gbk, character_set_connection=gbk, character_set_databse=latin1, character_set_filesystem=binary, character_set_results=gbk, character_set_server =latin1, character_set_system=utf8;然后还试过在textarea里加入属性style="word-break:break-all;word-wrap: break-word;",不过貌似是为了解决换行问题的,反正也是没用。噢,最后提一下,这个textarea的乱码不是一堆看不懂的字符,就是纯粹的???,不知道这个信息有没有用,希望有大神来解答一下小弟的问题,不胜感激。
你可以先看下接受到程序里面的时候是否乱码,是前端传到后台乱的,还是香数据库存储的时候乱的,如果在程序里面还不乱码,就可以直接设置数据库编码了额,这样排查一下问题,不是数据库的话,回来设置页面编码,传输方式等
页面加上
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
mysql 里是jdbc:mysql://xxxxxxxxx:3306/xxx?useUnicode=true&characterEncoding=UTF-8
上面那个不是代码哈,我论坛用的少,问题写着写着就写到代码区里了……另外上面我提过的方法是鉴定过无效的了,希望能得到新的可能的解决方案。
贴下代码更直观能发现是否那边有错误---
分析:出现???正常是传递中文数据时编码方式不同产生的;需要数据库编码格式,服务端接收数据编码格式,前端上传数据编码格式三个地方一致;
设置编码的位置:1.建立数据库是设定数据库数据的编码格式;2.服务器端controller层设置编码格式;3.前端web层设置编码格式
jsp页面:
controller:
SSM框架---
通用---
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
所用的软件编码方式也需要设置成相同