JDBC 连接 MySQL 中文乱码问题
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 中文乱码问题相关推荐
- SqlDbx连接Mysql中文乱码
** SqlDbx连接Mysql中文乱码 问题:mysql在命令行中显示正常,客户端中文显示乱码,将mysql的 odbc配置character set gbk 后解决问题
- c# mysql 编码_c# 连接MySQL中文乱码问题的正确方案
以下的文章主要向大家介绍的是c# 连接MySQL中文乱码问题的正确解决方法,一开始不太清楚为什么整个数据库的默认配置都为utf-8,而且有些人在使用http协议传送utf-8的汉字时,是正确的执行了的 ...
- c 访问mysql 乱码_c语言连接mysql中文乱码怎么办
c语言连接mysql中文乱码怎么办 发布时间:2020-06-30 13:42:44 来源:亿速云 阅读:96 作者:清晨 这篇文章主要介绍c语言连接mysql中文乱码怎么办,文中示例介绍的非常详细, ...
- eclipse读取mysql数据乱码,eclipse 连接mysql 中文乱码
eclipse 连接mysql 中文乱码 关注:121 答案:6 手机版 解决时间 2021-02-08 02:27 提问者萬裏夢魂 2021-02-07 08:29 我用eclipde连接mys ...
- ssh插入mysql乱码_解决SSH连接mysql中文乱码问题
1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...
- ssh mysql 乱码_解决SSH连接mysql中文乱码问题
1.Jsp页面的编码格式要是UTF-8. 2.数据库的字符编码格式UTF-8. 3.在WEB.XML文件中添加过滤器,参考代码如下: encodingFilter org.springframewor ...
- C# 连接 Mysql 中文乱码问题
如题这个问题还是让人比较揪心的.网上也有不少答案,五花八门,不知道谁对谁错.个人认为有几篇文章处理的这个问题还不错,现总结如下: 第一篇: c#连接MySQL解决汉字乱码 突然发现我的数据表中,有汉字 ...
- thinkphp mysql 中文_耗时5天解决thinkphp连接mysql中文乱码的问题
坑大,或者不大,它就在那里,等着你进. 先前修改成熟的一个基于thinkphp3.1.2的后台框架,里面有我的autoCode,本来在新项目上不想再用这么落后的版本,但考虑到后台项目不对外使用,重点是 ...
- 关于java连接MYSQL中文乱码处理
java连接mysql中参数的中文乱码问题 1,在创建mysql数据库时,需要在mysql目录下添加my.ini文件 [mysqld] character-set-server=utf8 #绑定IPv ...
最新文章
- 自适应分辨率可扩展二层JS下拉菜单
- 八个最好的开源机器学习框架和库
- 高德地图 android 调用 amap.clear()后定位蓝点消失 如何重新显示定位
- 跟面试官侃半小时MySQL事务隔离性,从基本概念深入到实现
- 安装erlang没有bin文件夹_RabbitMQ的安装和使用
- 命名实体识别_命名实体识别的几种标注形式
- java 字符串操作_Java 字符与字符串
- (附源码)app订餐APP 毕业设计 190711
- 100项PPT制作技术
- 【裴礼文数学分析】例1.2.4
- 《数据库应用》课程设计人事管理系统(java源代码)
- 双舵轮AGV里程计、运动控制核心算法
- 【Phusion Passenger】应用服务器
- FPGA接口实现----增量式编码器
- 游戏开发中的专业术语
- R语言——多元数据直观表示
- C语言试题十之将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
- Gradle下载spring包出现Received status code 401 from server: Unauthorized
- 网易视频云:HBase BlockCache系列-性能对比测试报告
- 对linux系统4T硬盘分区