美文网首页程序员
JSP adbc tag 连接 MySQL 数据库中文变?

JSP adbc tag 连接 MySQL 数据库中文变?

作者: OSong | 来源:发表于2017-12-02 22:44 被阅读74次

    前言

    我也不知道该怎么起标题了。这个标题大概就是我搜索错误是用到的关键词
    最近在写 JSP。 昨天用到了数据库,但是遇到了一个超级崩溃的错误。
    我的 SQL 语句中 如果出现了中文,在数据库中执行的时候 中文就变成了?

    错误的样子:
    我执行这个 
    select * from book where author like '%金庸%' 
    在数据库执行日志看就是 
    select * from book where author like '%??%' 
    这种错误
    

    当时大概思路是
    先查了一遍我的数据库和表以及字段的数据类型,没发现问题
    在请求数据查询的地方,直接写了一条固定的 SQL 语句。发现问题是出现在这里
    然后尝试各种解决方式 无效。 偶然想到了查询数据库日志,尝试,查到了日志可是没解决问题思路
    早上起来突然想到。会不会是整个 MySQL 的编码方式于是在网上找了篇参考文章 来自CSDN 的 参考文章 查看修改mysql编码方式

    整个过程

    查数据库的执行日志
    查询数据库实时执行 参考自 CSDN 博主 春夏秋冬又一年
    1. 进入 mysql, 修改设置:

    image
    2. 查看 mysql 的日志文件所在位置:
    image
    3. 在终端 用 tail -f 命令 打开该日志文件:
    tail -f /usr/local/var/mysql/日志文件名.log
    如果执行不了, 可能会需要权限, 在前面添加 sudo 即可
    (用 vim 打开的不是实时的, 需要手动翻页查看)
    4. 接下来,再进行 mysql 相关的查询等操作时,便可以在终端打开的这个文件里实时看到每一步的操作了
    比如:
    image
    在一篇文章中我发现了字符集可能导致的问题
    于是检查了一下字符集。
    检查字符集的方式
    mysql> show variables like 'character%';
    image.png
    可以看到我的 character_set_server value 值为 latin1
    问题应该是在这里 尝试把它改为 utf8
    有方法说是用
    mysql> set names utf8;
    我使用后无效. 于是看到网上说改配置文件,因为我是在官网下载 MySQL mac 版,我并没有找到 配置文件, 也没有找到 my-default.cnf
    修改期间必须关闭mysql!!!
    (这些内容参考子 博主 涂山千风)
    1. 我们要在/etc下新建my.cnf
      $ cd /etc $ sudo vim my.cnf
      输入: 内容见此链接 (这里边的内容目测就是 配置文件 )改character_set_server=utf8;
    2. 保存并退出
    3. 重启mysql。


      image.png

      完美!!!

    相关文章

      网友评论

        本文标题:JSP adbc tag 连接 MySQL 数据库中文变?

        本文链接:https://www.haomeiwen.com/subject/jcjobxtx.html