问题描述:

在网站底部进行评论,点击提交按钮时,后台tomcat报错,通过火狐浏览器的firebug看到发送的POST请求体中,有一个title参数是乱码,

导致该字段超长违反了数据库字段的长度约束:

这个title字段的应该是文章的标题(中文):

tomcat报错信息:

2017-06-15 16:15:50,448 DEBUG [modules.cms.dao.CommentDao.findList] - <==      Total: 1
============乱码部分内容===========&auml;&cedil;&shy;&aring;&curren;&reg;&ccedil;&not;&not;&aring;&auml;&cedil;€&aring;&middot;&iexcl;&egrave;&sect;
†&ccedil;&raquo;„&aring;‘&eacute;™•&egrave;&yen;&iquest;&ccedil;œ&aring;&sect;”&aring;&eacute;&brvbar;ˆ&aring;&middot;&iexcl;
&egrave;&sect;†&amp;ldquo;&aring;›ž&aring;&curren;&acute;&ccedil;œ‹&amp;rdquo;&aelig;ƒ…&aring;†&micro;
2017-06-15 16:17:12,911 DEBUG [modules.cms.dao.CommentDao.get] - ==> Preparing:
SELECT a.id AS "id", a.category_id AS "category.id", a.content_id AS "contentId", a.title AS "title", a.content AS "content", a.name AS "name",
a.ip AS "ip", a.create_date AS "createDate", a.audit_user_id AS "auditUser.id", a.audit_date AS "auditDate", a.del_flag AS "delFlag"
FROM cms_comment a WHERE a.id = ?
2017-06-15 16:17:12,912 DEBUG [modules.cms.dao.CommentDao.get] - ==> Parameters: 0(String)
2017-06-15 16:17:12,913 DEBUG [modules.cms.dao.CommentDao.get] - <== Total: 0
2017-06-15 16:17:12,917 DEBUG [modules.cms.dao.CommentDao.insert] - ==> Preparing:
INSERT INTO cms_comment( id, category_id, content_id, title, content, name, ip, create_date, audit_user_id, audit_date, del_flag )
VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
2017-06-15 16:17:12,924 DEBUG [modules.cms.dao.CommentDao.insert] - ==>
Parameters:   dd82abcfbd4d4176b8400dce7b8a0dd0(String),
  106c3f5a9d354d69946304ba1003e85e(String),
  9948c62c9ab4491daadccfe23032534b(String),   &auml;&cedil;&shy;&aring;&curren;&reg;&ccedil;&not;&not;&aring;&auml;&cedil;€&aring;&middot;&iexcl;&egrave;&sect;
  †&ccedil;&raquo;„&aring;‘&eacute;™•&egrave;&yen;&iquest;&ccedil;œ&aring;&sect;”&aring;&eacute;&brvbar;ˆ&aring;&middot;
  &iexcl;&egrave;&sect;†&amp;ldquo;&aring;›ž&aring;&curren;&acute;&ccedil;œ‹&amp;rdquo;&aelig;ƒ…&aring;†&micro;(String),   测试评论(String),
  小李(String),
  0:0:0:0:0:0:0:1(String),
  2017-06-15 16:17:12.916(Timestamp),
  null,
  null,
  2(String)
2017-06-15 16:17:13,035 ERROR [500.jsp] -
### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: INSERT INTO cms_comment( id, category_id, content_id, title, content, name, ip, create_date,
audit_user_id, audit_date, del_flag ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
; SQL []; Data truncation: Data too long for column 'title' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation:
Data truncation: Data too long for column 'title' at row 1
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL:
    INSERT INTO cms_comment(id, category_id, content_id, title, content, name, ip, create_date,
                  audit_user_id, audit_date, del_flag )
    VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'title' at row 1
; SQL []; Data truncation: Data too long for column 'title' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation:
               Data truncation: Data too long for column 'title' at row 1
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:102)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:74)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:399)
at com.sun.proxy.$Proxy27.insert(Unknown Source)

通过提示可以看出,执行SQL语句时报字段超长的错误,文章的中文标题在乱码之后,超出了title字段所允许的长度,因为数据库中title字段的长度为255:

解决办法:

打开tomcat的conf目录下的server.xml文件,在Connector标签中添加 URIEncoding="utf-8" 即可:

重启tomcat,再次测试,评论提交成功,也不再乱码了:

附jsp页面中EL表达式取值部分代码:

如果觉得本文对您有帮助,不妨扫描下方微信二维码打赏点,您的鼓励是我前进最大的动力:

最新文章

  1. 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
  2. SharePoint 2013 新功能探索 之 列表等级设置
  3. C# String.Format大全 去 decimal 后面的 0
  4. (int)、Convert.ToInt32()与int.Parse()的区别
  5. 【HDOJ】2774 Shuffle
  6. C++经典面试题(二)
  7. 【京东详情页】——原生js爬坑之标签页
  8. HDU 6035(树形dp)
  9. 基本数据类型 Symbol
  10. 集群增量会话管理器——DeltaManager
  11. 环境设置——pyCharm环境下导入MySQLdb遇到的一系列问题
  12. Oracle报错TNS-12532: TNS:invalid argument
  13. luogu P2644 树上游戏
  14. Navicat for MySQL安装工具及破解工具
  15. Linux 下创建 sftp 用户并限定目录
  16. python常用模块之subprocess
  17. 007 @CookieValue绑定请求中的cookie
  18. 开源项目PullToRefresh详解(一)——PullToRefreshListView
  19. 含有不等式约束的优化问题——KKT条件
  20. android学习-进程/线程管理-完整

热门文章

  1. 转:Spring Cache抽象详解
  2. MySQL 插入emoji 表情
  3. STS 设置代码注释模板
  4. mysql常用查询语句
  5. Mac添加快捷键开启应用程序(转)
  6. android图片等比例缩放 填充屏幕
  7. request.getRequestURI() 、request.getRequestURL() 、request.getContextPath()、request.getServletPath()区别
  8. 记github上搭建独立域名的免费博客的方法过程
  9. DVWA手记——取消登录
  10. Spring-MVC配置Gson做为Message Converter解析Json