情况说明
乱码如上,我使用我设计的页面添加数据到数据库中后会发现数据库中的数据会出现乱码,但是其实真正的原因应该是这些表单数据传递到servlet程序的过程中由于编码的格式出现了乱码.但是后面终于解决了.
查看网页的编码格式
按下F12,再控制台/Console中输入
document.charset
查看数据库的编码格式
show create database + 数据库名
修改数据库字符集(非必要)
找到my.ini文件
在mysqld上面加两句话
[client] default-character-set=utf8 [mysql] default-character-set=utf8
输入这句话查看字符集
SHOW VARIABLES LIKE 'character%';
记住重启mysql
当然, 你也可以使用dbeaver或者navicat中自带的方法直接修改数据库的字符集
servlet程序部分
input的提交借助于一个表单,表单的提交有两种选择,一种是post,另一种是get.
直接加上这句话即可
req.setCharacterEncoding("utf-8"); resp.setHeader("content-type","text/html;charset=UTF-8"); resp.setCharacterEncoding("UTF-8");
这句话基本可以解决很多问题了,如果还不行可能就是底层文件的问题了,可以试着修改tomcat的servlet.xml程序
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
html页面部分
表单的提交可以在里面加入accept-charset设定提交字符集以及meta标签中添加charset设定字符集的方法
<meta http-equiv="content-type" content="text/html" charset="UTF-8">
<form action="hotelServlet" method="get" accept-charset="UTF-8">
tomcat部分
-Dfile.encoding=UTF-8
idea部分