当前位置:网站首页>数据乱码问题—更改mysql字符编码
数据乱码问题—更改mysql字符编码
2022-08-02 14:04:00 【王永俊】
作为一名程序猿,几乎每天都在跟编码格式,乱码作斗争,如何你没有被乱码虐过,你肯定不好意思说你是一枚优秀的程序员。这不是今天我也被乱码血洗了一遍,下面说一下我需要的问题,和解决问题的思路。
忠告:
每次搭建环境的时候一定要统一了编码格式,主要包括:浏览器、IDE(比如eclipse)、数据库(比如Mysql)、jsp页面的编码、服务器(比如Tomcat)和其他(比如我们使用maven等)
今天将工作流模块跑起来之后,发现自己添加的数据,每次读出来都是乱码,而且只要经过自己修改的数据都变成了乱码。然后开始排查。因为其他都没有错而且设计编码格式比较简单,就不在这里详细说明了,本篇文章只是解决一个mysql设置编码格式的问题。
步骤
1.查看了浏览器和IDE的环境,发现都是UTF-8的。
2.然后检查了jsp页面,也都是UTF-8的。注:大家在新建jsp页面的时候,记得修改编程格式(包括引入页面的编码格式)。
3.检查了tomcat的编码,也是UTF-8的。
4.检查mysql编码,发现最后的问题就是出在mysql。
误区
因为使用了Navicat Premium,所以我第一反应就是在客户端修改了数据库的编码,可是发现还是乱码,然后修改了my.ini文件里面的字符集,发现还是没有解决问题。最后发现,修改完my.ini文件之后,必须重启mysql服务,记住不是重新连接数据库,是重启mysql服务,如果你没有使用命令的习惯,就去资源管理器中将mysql服务重启。
正确的解决方案:
一:查看默认字符集
默认情况下,mysql的字符集是latin1(ISO_8859_1),通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE ‘character%’;
+————————–+———————————+
| Variable_name | Value |
+————————–+———————————+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir |C:\Program Files\MySQL\MySQL Server 5.5\share\chars
ets\
|
+————————–+———————————+
mysql> SHOW VARIABLES LIKE ‘collation_%’;
+———————-+—————–+
| Variable_name | Value |
+———————-+—————–+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+———————-+—————–+
二:修改默认字符集
(1)简单的修改方法,就是直接修改mysql的my.ini文件中的字符集键值。
(2)使用mysql的命令
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
三:重启mysql的服务
service mysql restar或者直接在资源管理器中找到mysql服务,直接重启。
附:我们也可以执行 :mysql>alter database mydb character set utf8;来修改已经建立的数据库字符集
总结
其实团体开发需要我们提前统一好各种工具使用的编码格式,这样可以减少很多麻烦,而且我们每个人安装工具的时候也要根据团队要求设置好编码格式。当然,有时候即使我们严格按照要求来设置,依旧会出现乱码,这时候就需要我们根据实际情况来解决,比如在代码中转码之类的,等遇到了再说。
边栏推荐
- What's wrong with running yolov5 (1) p, r, map are all 0
- ThinkPHP5.0内置分页函数Paginate无法获取POST页数问题的解决办法
- static关键字3种作用,简单粗暴对比,好理解
- C语言一级指针(补)
- VS Code无法安装插件之Unable to install because, the extension '' compatible with current version
- [ROS](01)创建ROS工作空间
- HBuilderX 核心插件安装提示:“插件XXX下载失败,请检查网络”问题的解决办法
- 我的第一篇博客
- Programming Specifications - LiteOS
- PHP版本切换:5.x到7.3
猜你喜欢

宏定义问题记录day2

YOLOv7使用云GPU训练自己的数据集

YOLOv7 uses cloud GPU to train its own dataset

Unit 14 Viewsets and Routing

The IDEA of packaged jar package
![[ROS] The software package of the industrial computer does not compile](/img/a8/a1347568170821e8f186091b93e52a.png)
[ROS] The software package of the industrial computer does not compile

存储系统Cache(知识点+例题)

MongoDB Compass 安装与使用

verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第九章)

什么是 Web 3.0:面向未来的去中心化互联网
随机推荐
鼠标右键菜单栏太长如何减少
浮点数的运算方法
Unit 4 Routing Layer
无人驾驶综述:国外国内发展历程
[ROS](04)package.xml详解
标签加id 和 加号 两个文本框 和一个var 赋值
十分钟带你入门Nodejs
C语言待解决
YOLOv7 uses cloud GPU to train its own dataset
[ROS] The software package of the industrial computer does not compile
yolov5,yolov4,yolov3 mess
什么是闭包?闭包的作用?闭包的应用?有什么缺点?
华为防火墙
Unit 5 Hold Status
【c】小游戏---扫雷雏形
ABP,kendo后台接口,新增,查询
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十三章)
云GPU(恒源云)训练的具体操作流程
c语言用scanf出错不安全的解决办法
我的第一篇博客