解决 MySQL 数据库编码乱码问题

编辑配置文件,打开 MySQL 的安装目录,打开 my.ini 。在文件中相关的标签中添加相应语句,如果标签下已经存在,只需要修改即可。如果三四五没找到就忽略。
一、【mysqld】标签下添加
character-set-server = utf8(字符集编码)
二、【mysql】标签下添加
default-character-set = gbk(字符集编码)。此句会影响 client、results、connection 三个字段
三、【mysql.server】标签下添加
default-character-set = utf8(字符集编码)
四、【mysqld_safe】标签下添加
default-character-set = utf8(字符集编码)
五、【client】标签下添加
default-character-set = utf8(字符集编码)
六、重新启动 MySQL 服务
两种方式
一:右键我的电脑 > 管理 > 打开服务和应用程序 > 服务 > 找到 MySQL > 右键停止 > 右键启动。
二:徽标键 + R,输入 CMD,使用命令 net stop mysql(服务名),停止。net start mysql(服务名),启动。服务名可能不一定是 MySQL。如果出现启动失败,请检查配置文件有没有设置错误。
七、查看设置结果
两种方式打开 MySQL 客户端
(1)打开 MySQL 的安装目录,进入 bin 目录,搜索栏输入 CMD 回车,输入命令 mysql -uroot -p,输入密码。
(2)打开 MySQL 5.5 Command Line Client,输入密码即可。
输入命令:show variables like “%character%”;
显示结果如下:
名称字符集编码
character_set_clientgbk
character_set_connectiongbk
character_set_databaseutf8
character_set_filesystembinary
character_set_resultsgbk
character_set_serverutf8
character_set_systemutf8
character_sets_dirH:\Java\MySQL\share\charsets
如果仍有不是编码为设置的编码,请检查配置文件,也可以使用 MySql 命令设置
set character_set_client = utf8;
set character_set_server = utf8;
set character_set_connection = utf8;
set character_set_database = utf8;
set character_set_results = utf8;
set collation_connection = utf8_general_ci;
set collation_database = utf8_general_ci;
set collation_server = utf8_general_ci;

创建和修改数据库编码的命令
create database 数据库名 character set utf8(你所需要的字符集编码);
alter database 数据库名 character set utf8(你所需要的字符集编码);

关于 MySQL 中 8 个 charset_set 说明
character_set_client:主要用来设置客户端使用的字符集。客户端发送的是 GBK。
character_set_connection:主要用来设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集则按照这个设置。
character_set_database:主要用来设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。
character_set_filesystem:文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client 转换成此字符集, 默认 binary 是不做任何转换的。
character_set_results:数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式。
character_set_server:服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要人为定义。
character_set_system:数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式。
character_sets_dir:这个变量是字符集安装的目录。
在启动 MySQL 后,我们只关注下列变量是否符合我们的要求:
character_set_client。character_set_connection。character_set_database。character_set_results。character_set_server
上述的字符集转换流程
第一步:MySQL Server 收到请求时将请求数据从 character_set_client 转换为 character_set_connection
第二步:进行内部操作前将请求数据从 character_set_connection 转换为内部操作字符集,步骤如下 :
A. 使用每个数据字段的 CHARACTER SET 设定值;
B. 若上述值不存在,则使用对应数据表的字符集设定值;
C. 若上述值不存在,则使用对应数据库的字符集设定值;
D. 若上述值不存在,则使用 character_set_server 设定值。
第三步:最后将操作结果从内部操作字符集转换为 character_set_results
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值