当前位置:网站首页>数据乱码问题—更改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;来修改已经建立的数据库字符集
总结
其实团体开发需要我们提前统一好各种工具使用的编码格式,这样可以减少很多麻烦,而且我们每个人安装工具的时候也要根据团队要求设置好编码格式。当然,有时候即使我们严格按照要求来设置,依旧会出现乱码,这时候就需要我们根据实际情况来解决,比如在代码中转码之类的,等遇到了再说。
边栏推荐
- Unit 7 ORM table relationships and operations
- Flask contexts, blueprints and Flask-RESTful
- 无人驾驶综述:国外国内发展历程
- 什么是闭包?闭包的作用?闭包的应用?有什么缺点?
- 执行栈和执行上下文
- C语言日记 4 变量
- 【Camera2】由Camera2 特性想到的有关MED(多场景设备互动)的场景Idea
- Implementation of redis distributed lock and watchdog
- yolov5 improvement (1) Add attention focus mechanism
- C语言字符串——关于指针
猜你喜欢
Using the cloud GPU + pycharm training model to realize automatic background run programs, save training results, the server automatically power off
主存储器(一)
猜数字游戏,猜错10次关机(srand、rand、time)随机数生成三板斧(详细讲解!不懂问我!)
YOLOv7使用云GPU训练自己的数据集
C语言日记 4 变量
C语言sizeof和strlen的区别
主存储器(二)
[ROS](03)CMakeLists.txt详解
宏定义问题记录day2
verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十二章)
随机推荐
宏定义问题记录day2
华为防火墙IPS
MarkDown syntax summary
利用c语言实现对键盘输入的一串字符的各类字符的计数
线性代数期末复习存档
A little thought about password encryption
使用云GPU+pycharm训练模型实现后台跑程序、自动保存训练结果、服务器自动关机
标签加id 和 加号 两个文本框 和一个var 赋值
C语言sizeof和strlen的区别
[ROS] (04) Detailed explanation of package.xml
C语言初级—水仙花数
getUserProfile接口不显示用户性别和地区
uniCloud 未能获取当前用户信息:30205 | 当前用户为匿名身份
Unit 5 Hold Status
无人驾驶综述:国外国内发展历程
十分钟带你入门Nodejs
鼠标右键菜单栏太长如何减少
The 2nd China Rust Developers Conference (RustChinaConf 2021~2022) Online Conference Officially Opens Registration
Unit 14 Viewsets and Routing
St. Regis Takeaway Notes - Lecture 05 Getting Started with Redis