JDBC 连接 MySQL 中文乱码问题

前言

最近在写小项目,用到了上个月刚学的mysql和 JDBC,在java查询时出现了中文乱码,在网络上查询资料,发现相关问题比较混乱,故整理一下解决方法。

原因

字符集不匹配

运行环境

  • MyEclipse2014
  • JDK1.7
  • mysql-connector-java-5.1.47
  • MySQL5.7
默认字符集 内容
MySQL Latin1(ISO-8859-1) 单字节编码,向下兼容ASCII
MyEclipse2014 GBK(汉字内码扩展) 双字节编码,向下兼容GB 2312,向上支持 ISO 10646
通用 UTF-8(万国码) 可变长度字符编码,兼容ISO-8859-1,兼容ISO 10646

所以把运行环境的字符集格式统一就行了吗,太天真了→_→

解决方法

MyEclipse

对于MyEclipse的字符集修改在项目的属性里

这个操作是要在项目创建时就进行,不能在编写代码后进行,不然中文注释就乱码了o(╥﹏╥)o

一劳永逸的解决方法是对整个MyEclipse的默认字符集进行修改
Window——perferences


当然,你可以搜索encoding将所有字符集都修改一下(不推荐)

MySQL(重点

MySQL的编码修改是坑最多的

如果你查资料会找到一个SQL语句show variables like '%char%'用来查看字符集

解释
character_set_client 设置客户端字符集
character_set_connection 设置连接字符集
character_set_database 设置数据库默认字符集,character_set_database显示的和character_set_server一致
character_set_filesystem 把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem,默认binary是不做任何转换的
character_set_results 设置结果字符集
character_set_server 设置服务器字符集
character_set_system 设置系统字符集
character_set_dir 设置字符集安装目录

修改语句为set character_set_XXXX=XXXX;
你以为到这就结束了吗,不真正的坑出现了

当你关闭当前查询,使用JDBC时发现,还是乱码,回头一看,一切又被改回来了o(╥﹏╥)o

治标还要治本

前面的更改只在那个Session(会话)中,相当于临时修改,要永久修改还要修改mysql配置文件
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini中的字符集设置

一共两处
[mysql]下面的default-character-set,将注释#去掉,加上你要字符集
[mysqld]下面的character-set-server同理

然后重启mysql服务,就行了

虽然这样就可以,统一字符集

不过在写连接字符串时还是要加上参数
jdbc:mysql://127.0.0.1:3306/game?useUnicode=true&characterEncoding=UTF-8

保险一些

总结

虽然一般操作数据库都是用框架,配置简单,但使用底层接口操作,遇到的麻烦更能锻炼人,更能深入底层,分析背后的变化,对基本功要求更高。

JDBC 连接 MySQL 中文乱码问题相关推荐

  1. SqlDbx连接Mysql中文乱码

    ** SqlDbx连接Mysql中文乱码 问题:mysql在命令行中显示正常,客户端中文显示乱码,将mysql的 odbc配置character set gbk 后解决问题

  2. c# mysql 编码_c# 连接MySQL中文乱码问题的正确方案

    以下的文章主要向大家介绍的是c# 连接MySQL中文乱码问题的正确解决方法,一开始不太清楚为什么整个数据库的默认配置都为utf-8,而且有些人在使用http协议传送utf-8的汉字时,是正确的执行了的 ...

  3. c 访问mysql 乱码_c语言连接mysql中文乱码怎么办

    c语言连接mysql中文乱码怎么办 发布时间:2020-06-30 13:42:44 来源:亿速云 阅读:96 作者:清晨 这篇文章主要介绍c语言连接mysql中文乱码怎么办,文中示例介绍的非常详细, ...

  4. eclipse读取mysql数据乱码,eclipse 连接mysql 中文乱码

    eclipse 连接mysql 中文乱码 关注:121  答案:6  手机版 解决时间 2021-02-08 02:27 提问者萬裏夢魂 2021-02-07 08:29 我用eclipde连接mys ...

  5. ssh插入mysql乱码_解决SSH连接mysql中文乱码问题

    1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...

  6. ssh mysql 乱码_解决SSH连接mysql中文乱码问题

    1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...

  7. C# 连接 Mysql 中文乱码问题

    如题这个问题还是让人比较揪心的.网上也有不少答案,五花八门,不知道谁对谁错.个人认为有几篇文章处理的这个问题还不错,现总结如下: 第一篇: c#连接MySQL解决汉字乱码 突然发现我的数据表中,有汉字 ...

  8. thinkphp mysql 中文_耗时5天解决thinkphp连接mysql中文乱码的问题

    坑大,或者不大,它就在那里,等着你进. 先前修改成熟的一个基于thinkphp3.1.2的后台框架,里面有我的autoCode,本来在新项目上不想再用这么落后的版本,但考虑到后台项目不对外使用,重点是 ...

  9. 关于java连接MYSQL中文乱码处理

    java连接mysql中参数的中文乱码问题 1,在创建mysql数据库时,需要在mysql目录下添加my.ini文件 [mysqld] character-set-server=utf8 #绑定IPv ...

最新文章

  1. 自适应分辨率可扩展二层JS下拉菜单
  2. 八个最好的开源机器学习框架和库
  3. 高德地图 android 调用 amap.clear()后定位蓝点消失 如何重新显示定位
  4. 跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现
  5. 安装erlang没有bin文件夹_RabbitMQ的安装和使用
  6. 命名实体识别_命名实体识别的几种标注形式
  7. java 字符串操作_Java 字符与字符串
  8. (附源码)app订餐APP 毕业设计 190711
  9. 100项PPT制作技术
  10. 【裴礼文数学分析】例1.2.4
  11. 《数据库应用》课程设计人事管理系统(java源代码)
  12. 双舵轮AGV里程计、运动控制核心算法
  13. 【Phusion Passenger】应用服务器
  14. FPGA接口实现----增量式编码器
  15. 游戏开发中的专业术语
  16. R语言——多元数据直观表示
  17. C语言试题十之将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
  18. Gradle下载spring包出现Received status code 401 from server: Unauthorized
  19. 网易视频云:HBase BlockCache系列-性能对比测试报告
  20. 对linux系统4T硬盘分区

热门文章

  1. Python计算csv数据的算数平均值
  2. 第八课:不一样的链表 linux链表设计哲学 5星级教程
  3. 如何扩大无线网络信号强度?
  4. 第八章 Groovy 动态编程
  5. java实现十六进制数与图片的互相转换
  6. 计算机系美国留学推荐信中文版,美国留学 推荐信样例(计算机)
  7. 智能车学习(二十三)——浅谈心得体会
  8. 高通平台lcm 总结
  9. 颠覆推特VS改造推特:什么是去中心化社交的正确姿势?
  10. Windows官方Linux子系统C/C++开发环境搭建