JSP,mysql,tomcat,罕见中文乱码问题from textarea?

最近在上手学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的乱码不是一堆看不懂的字符,就是纯粹的???,不知道这个信息有没有用,希望有大神来解答一下小弟的问题,不胜感激。

4个回答

你可以先看下接受到程序里面的时候是否乱码,是前端传到后台乱的,还是香数据库存储的时候乱的,如果在程序里面还不乱码,就可以直接设置数据库编码了额,这样排查一下问题,不是数据库的话,回来设置页面编码,传输方式等

Skyrime
Skyrime 回复weixin_39808420: 问题解决了,问题核心在最开始被忽略的报错那里,因为textarea内容对应的简介这一个属性在数据库表格里是text数据格式,而text格式貌似只能用latin1编码,所以我其他默认都是utf-8编码,就text格式的是latin1,用alter语句修改字段编码格式为utf8后text自动变成mediumtext了,之后就正常了,而我最开始用的用iso解码的方法虽然可以停止报错,但解码之后用什么编码都是???,因为本来这个textarea的值就是utf8编码的被我强行用iso解码了。
一年多之前 回复

页面加上

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 mysql 里是jdbc:mysql://xxxxxxxxx:3306/xxx?useUnicode=true&characterEncoding=UTF-8

上面那个不是代码哈,我论坛用的少,问题写着写着就写到代码区里了……图片说明另外上面我提过的方法是鉴定过无效的了,希望能得到新的可能的解决方案。

qq_23126581
渊渟无迹静涛君 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");
所用的软件编码方式也需要设置成相同


数据库-例MySQL
图片说明

Skyrime
Skyrime 。。。app抽风了不好意思
一年多之前 回复
Skyrime
Skyrime 回复fostlin: 问题解决了,问题核心在最开始被忽略的报错那里,因为textarea内容对应的简介这一个属性在数据库表格里是text数据格式,而text格式貌似只能用latin1编码,所以我其他默认都是utf-8编码,就text格式的是latin1,用alter语句修改字段编码格式为utf8后text自动变成mediumtext了,之后就正常了,而我最开始用的用iso解码的方法虽然可以停止报错,但解码之后用什么编码都是???,因为本来这个textarea的值就是utf8编码的被我强行用iso解码了。
一年多之前 回复
Skyrime
Skyrime 回复fostlin: 问题解决了,问题核心在最开始被忽略的报错那里,因为textarea内容对应的简介这一个属性在数据库表格里是text数据格式,而text格式貌似只能用latin1编码,所以我其他默认都是utf-8编码,就text格式的是latin1,用alter语句修改字段编码格式为utf8后text自动变成mediumtext了,之后就正常了,而我最开始用的用iso解码的方法虽然可以停止报错,但解码之后用什么编码都是???,因为本来这个textarea的值就是utf8编码的被我强行用iso解码了。
一年多之前 回复
Skyrime
Skyrime 回复fostlin: 问题解决了,问题核心在最开始被忽略的报错那里,因为textarea内容对应的简介这一个属性在数据库表格里是text数据格式,而text格式貌似只能用latin1编码,所以我其他默认都是utf-8编码,就text格式的是latin1,用alter语句修改字段编码格式为utf8后text自动变成mediumtext了,之后就正常了,而我最开始用的用iso解码的方法虽然可以停止报错,但解码之后用什么编码都是???,因为本来这个textarea的值就是utf8编码的被我强行用iso解码了。
一年多之前 回复
Skyrime
Skyrime 回复fostlin: 问题解决了,问题核心在最开始被忽略的报错那里,因为textarea内容对应的简介这一个属性在数据库表格里是text数据格式,而text格式貌似只能用latin1编码,所以我其他默认都是utf-8编码,就text格式的是latin1,用alter语句修改字段编码格式为utf8后text自动变成mediumtext了,之后就正常了,而我最开始用的用iso解码的方法虽然可以停止报错,但解码之后用什么编码都是???,因为本来这个textarea的值就是utf8编码的被我强行用iso解码了。
一年多之前 回复
Skyrime
Skyrime 回复fostlin: 问题解决了,问题核心在最开始被忽略的报错那里,因为textarea内容对应的简介这一个属性在数据库表格里是text数据格式,而text格式貌似只能用latin1编码,所以我其他默认都是utf-8编码,就text格式的是latin1,用alter语句修改字段编码格式为utf8后text自动变成mediumtext了,之后就正常了,而我最开始用的用iso解码的方法虽然可以停止报错,但解码之后用什么编码都是???,因为本来这个textarea的值就是utf8编码的被我强行用iso解码了。
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问