MySQL中文乱码问题探究

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL中文乱码问题探究

1.修改MySQL默认编码


看下面的博客:


https://blog.csdn.net/weixin_45525272/article/details/107985386


2.mysql中文乱码问题三层因素:


因素1: MySQL自身的设计


【实验步骤1】:


mysql> show variables like 'character%';
• 1


查看所有应用的字符集



【实验步骤2】:


$ mysql -uroot -p123456 --default_character_set=gbk


指定字符集登录数据库


mysql> show variables like 'character%';
• 1


影响了与客户端相关联的 3处 (最外层)


在这种状态下执行use mydb2;


mysql> select * from employee;


查看输出,会出现乱码。


原来的三条数据,是以utf8的形式存储到数据库中,当使用gbk连接以后,数据库仍按照utf8的形式将数据返回,出错。


【实验步骤3】:


在该环境下插入带有中文的一行数据。


mysql> insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(10,‘张三’,1,‘1988-09-21’,15000,‘2012-06-24’,‘一个老牛’);

ERROR 1366 (HY000): Incorrect string value: ‘\x80\xE4\xB8\xAA\xE8\x80…’ for column ‘resume’ at row 1


因素2:操作系统的语言集


linux操作系统 是一个 多用户的操作
[root@localhost ~]# cat /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"  
操作系统的菜单按照zh_CN显示,  文件存储按照utf8
linux操作系统语言环境 和 用户的配置的语言环境LANG 相互影响
[mysql01@localhost ~]$ echo $LANG
zh_CN.UTF-8


【实验步骤4】:


修改用户下的.bash_profile 中的LANG,屏蔽操作系统的LANG设置。再查数据库


mysql> select * from employee;


结论: 用户的LANG设置,影响了应用程序的语言环境,导致myql的语言环境发生了改变:


mysql> show variables like 'character%';
• 1


在此环境下,检索中文会出现乱码。


【实验步骤5】:在上述环境之下,向数据库中插入中文。


insert into employee(id,name,sex,birthday,salary,entry_date,resume) values(5,‘张三疯’,1,‘1987-05-21’,15000,‘2014-06-24’,‘一个老牟’);

数据能插入到数据库中,没 有 报 任 何 错 误!但显示不正确。


因素3:文件存储格式


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
689 0
|
6月前
|
SQL 监控 关系型数据库
解密MySQL二进制日志:深度探究mysqlbinlog工具
解密MySQL二进制日志:深度探究mysqlbinlog工具
987 3
|
6月前
|
存储 监控 关系型数据库
解密MySQL中的临时表:探究临时表的神奇用途
解密MySQL中的临时表:探究临时表的神奇用途
663 3
|
7月前
|
关系型数据库 MySQL 数据库
|
存储 关系型数据库 MySQL
深入探究MySQL临键锁
临键锁(Next-Key Lock):临键锁是查询时InnoDB根据查询的条件而锁定的一个范围,这个范围中包含有间隙锁和记录数;临键锁=间隙锁+记录锁。 其设计的目的是为了解决Phantom Problem(幻读);主要是阻塞insert,但由于临键锁中包含有记录锁,因此临键锁所锁定的范围内如果包含有记录,那么也会给这些记录添加记录锁,从而造成阻塞除insert之外的操作;
2343 1
|
7月前
|
存储 关系型数据库 MySQL
Mysql学习--深入探究索引和事务的重点要点与考点
Mysql学习--深入探究索引和事务的重点要点与考点
|
7月前
|
关系型数据库 MySQL Java
windows下mybatis插入mysql数据中文乱码问题解决
windows下mybatis插入mysql数据中文乱码问题解决
265 0
|
7月前
|
存储 SQL 关系型数据库
揭秘MySQL的神秘面纱:深入探究ACID底层实现原理!
揭秘MySQL的神秘面纱:深入探究ACID底层实现原理!
107 0
|
7月前
|
关系型数据库 MySQL Linux
MySQL【部署 01】Linux root 用户部署 mysql-5.7.28 及 not allowed to connect to this MySQL server 和中文乱码问题处理
MySQL【部署 01】Linux root 用户部署 mysql-5.7.28 及 not allowed to connect to this MySQL server 和中文乱码问题处理
84 0
|
关系型数据库 MySQL Shell
MySQL中文乱码问题
MySQL中文乱码问题
58 0