首先,我做的是JDBc的项目,很简单的,但是不知道为什么,添加数据的时候就是无法添加进去,好像是数据回滚了,我查了一下原因,应该是添加的数据传到后台时乱码,我想应该是这个原因
看截图
这个的话,是通过后台重定向到查询servlet,然后再转发到查询所有页,当点击修改后,我试着在后台输出一下我接受的值
然后控制台输出
报的错误如下
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from flower set name ='ç«ç°è±',price=11.22,production='å京' at line 1
可以看到他乱码了,很多人说我的配置,我给看下我的配置,
首先,我的tomcat中的xml文件那个xml文件,已经添加了utf-8
其次tomcat这个配置也已经写了
再idea中的leap的这个也写了
还有设置
sql中的字符集如下:
还有字符编码过滤器:
基本上配置这些,但是不知道为什么就是前台传进后台会乱码,但是后台数据显示 再前台没有事情
我的控制台输出汉字正常
请问这个要怎么解决
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
所有重定向的代码都加上类似这样的设置字符集的语句,前端页面也检查下有没有指定字符集。
都检查确认完了,就不会乱码了。
如有帮助,请采纳,十分感谢!
可以先把参数用urlencode处理一下
前端是 form 表单提交吗
你打断点看你的过滤器走了吗,在web.xml配置了没
首先,后台修改数据库编码
修改mysql配置文件/etc/my.cnf。
或者my.ini
修改后重启数据库
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
将sql字符集换成如下图试试
更换后,手动在库中执行你的sql语句进行验证,看看有没有问题,然后在代码汇总运行,并debug模式测试一下
可以看下你的SQL语句,报错的是sql语句拼写错误
接受请求的编码也要设置
request.setCharacterEncoding("uft-8");
两个问题,你直接用postman接口工具测试会乱码嘛,不会的话就是前端那边没有设置,这时候可以在前端界面加入编码UTF-8。如果postman接收参数乱码,那就是web.xml的配置有问题