之前简单弄一个从数据库查询的jsp页面发现查询中文数据时报编码错误,简单来说解决方法有几种:
一.数据库连接问题
我用的是jdbc.properties,正确的url:
jdbc.url=jdbc:mysql://localhost:3306/db_student?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
mysql版本较高,略有不同,关键是:
useUnicode=true&characterEncoding=UTF-8
或者另一种写法:
<property name="url" value="jdbc:mysql://localhost:3306/db_student?useUnicode=true&characterEncoding=UTF-8"/>
二.mysql配置问题:
查询MySQL数据库服务器和数据库MySQL字符集:
show variables like "%char%";
若看到下图,那么可以直接跳过此方法。
否则:
找到mysql安装目录下的my.ini(我的版本5.7),配置,加上或修改utf8编码语句
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=E:\mysql
datadir=E:\mysql\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
[client]
default-character-set=utf8
三.
荣幸之至,当以上两种都排除而问题依旧无法解决,那就好好检查代码吧。我的问题是:
<form action="${pageContext.request.contextPath}/user/login.do" method="post">
userName:<input type="text" name="userName" value="${userName}"/><br/>
passWord:<input type="password" name="passWord" value="${passWord}"/><br/>
<input type="submit" value="登录"/><br/>
</form>
将代码中的method手误写成了mothod,奇奇怪怪,他喵的怎么就查不出中文了。