数据库导入中文数据显示乱码解决

数据库导入中文数据显示乱码解决

1.问题描述

在这里插入图片描述

数据库中导入中文数据时中文显示乱码???

2.探究原因

确认数据库连接的字符集设置

 show variables like '%char%';

在这里插入图片描述

结果显示字符编码为utf8

检查数据库和表的字符集: 再次确认数据库和表的字符集是否确实为 utf8mb4

SHOW CREATE DATABASE your_database_name;
SHOW CREATE TABLE your_table_name;
# 若发现编码不为utf8,修改数据库和表的编码,或在下文中的my.cnf一次性完成配置
ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

根据以上内容推断出现乱码的原因:

  1. 数据插入时的字符集:数据在插入数据库时使用的字符集不是 utf8mb4
  2. 客户端连接的字符集:客户端(例如命令行工具、应用程序等)连接到MySQL服务器时没有使用正确的字符集。
  3. 历史数据问题:如果数据是之前用其他字符集存储的,那么即使现在设置了正确的字符集,旧的数据仍然会显示为乱码。
3.解决

查看数据库字符编码SHOW VARIABLES LIKE 'character_set_%';
发现set_client和set_connection都不为utf8

在这里插入图片描述

临时设置,只针对当前对话:

输入命令:SET NAMES utf8mb4;
修改为:
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4
即可显示中文。

但以上设置只是针对当前对话,下一次重启mysql会话仍会报错,现进行永久设置:

1)修改MySQL配置文件: 你可以在MySQL服务器的配置文件(通常是my.cnfmy.ini)中添加相应的设置。这样,当MySQL服务启动时,这些设置就会被加载。

2)Linux下my.cnf文件可能路径

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /usr/local/mysql/etc/my.cnf

3)添加配置:

[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

[client]
default-character-set=utf8mb4

修改完成后,重新登录MySQL服务即可使更改生效。

ps:docker镜像中安装vim命令

apt update
apt install vim
4.结果

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值