解决jsp给mysql传中文乱码

  • 今天上课的时候做一个javaweb案例
  • 用到了数据库
  • 在我插入中文的时候发现了问题在我的数据库中发现,中文变成了问号
  • 遇到这个问题第一时间肯定是检查 数据库-页面代码-服务器 问题肯定就在这三个里面

1. 我第一时间是看数据库

  • 在数据库中设置了 utf-8 的字符集
  • 但是在软件中设置 utf-8 保存后是看不见的
  • 然后就去修改数据,当发现数据修改后可以成功的时候我知道数据库是没有问题的

2. 我再去看页面代码

  • 首先检查发送数据的表单页设置utf8没
  • 再检查 业务逻辑处理页面的utf8设置了没
    1
    <%@ page contentType="text/html;charset=UTF-8" import="java.util.*,java.sql.*" language="java" pageEncoding="UTF-8" %>
1
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  • 发现加了还是没有效果

3. 我再去看 服务器 是否乱码

  • jsp 我用的是 apache tomcat 服务器
  • 检测 服务器文件->conf->server.xml 文件
  • 大概在 68 行左右的位置

    1
    2
    3
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" URIEncoding="UTF-8"/>
  • 找到这句 看看 是否有设置 URIEncoding=”UTF-8”

  • 但是做到了这里还是没有效果

4. 按道理做完前面的应该可以了啊 我再去看 业务逻辑代码

  • 想起在链接数据库的时候加一个utf8的字符集可不可以

    1
    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=UTF-8","root","");
  • 在数据库链接加入 ?useUnicode=true&characterEncoding=UTF-8 来设置字符集

  • 这样就成功显示了中文了
-------------本文结束感谢您的阅读-------------
0%