Navicat 查数据 乱码 解决 的经历

今日 一直没有太关注Navicat 界面上建立连接的事情,一般编码就默认(自动)了,一般也ok了,

期间解决其他插入数据报错的时候,无意中把建立连接的编码改了,我当时也没查数据库里的中文内容(其实这个时候,在mysql中用Navicat查询的时候,就已经是乱码),又继续忙用RAP读取电商网站下载下来的Excel数据,然后用RPA把读取出来的数据以2维列表形式插入到mysql数据库,其实是传参(2维列表是参数),RPA插入老是报错比方报:

Conversion from collation utf8mb3_general_ci into utf8mb4_general_ci impossi

我尝试:

1、更改字符集

客户端和服务器端的编码是不是都统一成功utf8mb4,或者统一重置成这个,重启mysql,效果不好,还是不好中文显示????英文能正常显示,

sql 复制代码
	-- 查看数据库的字符集
SHOW CREATE DATABASE be_test;

-- 修改数据库字符集为 utf8mb4
ALTER DATABASE your_database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

-- 查看表的字符集
SHOW CREATE TABLE redbook_order_Copy;

-- 修改表的字符集为 utf8mb4
ALTER TABLE your_table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

SELECT * from redbook_order_Copy
	
	
	SHOW VARIABLES LIKE 'character_set_%';
SHOW VARIABLES LIKE 'collation_%';
	
	
	ALTER DATABASE be_test CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE redbook_order_Copy CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
	
	
-- 1. 查看数据库字符集
SELECT SCHEMA_NAME '数据库', 
       DEFAULT_CHARACTER_SET_NAME '字符集',
       DEFAULT_COLLATION_NAME '排序规则'
FROM information_schema.SCHEMATA 
WHERE SCHEMA_NAME = 'be_test';

-- 2. 查看表字符集
SELECT TABLE_SCHEMA '数据库',
       TABLE_NAME '表',
       TABLE_COLLATION '排序规则'
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'be_test'
AND TABLE_NAME = 'redbook_order_Copy';

-- 3. 查看字段字符集
SELECT TABLE_SCHEMA '数据库',
       TABLE_NAME '表',
       COLUMN_NAME '字段',
       CHARACTER_SET_NAME '字符集',
       COLLATION_NAME '排序规则'
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'be_test'
AND TABLE_NAME = 'redbook_order_Copy'
AND CHARACTER_SET_NAME IS NOT NULL;

-- 4. 修改数据库字符集为 utf8mb4
ALTER DATABASE be_test CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

-- 5. 修改表字符集
ALTER TABLE redbook_order_Copy CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 6. 修改特定字段字符集
ALTER TABLE redbook_order_Copy MODIFY COLUMN 字段名 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2、因为是乱码,我尝试,在连接中增加字符集,

在RPA界面的连接组件中把连接字符串中增加字符集,效果依旧不好:

bash 复制代码
 Provider=MSDASQL.1;Password=AAAAA;Persist Security Info=True;User ID=ShBe;Data Source=localb;Initial Catalog=be_test;CharacterSet=utf8mb4;Charset=utf8mb4

3、重建数据库

后来想是不是我改字符集,把数据库给改乱了,索性把数据库删除了。重建库的时候,注意使用utf8mb4,然后再重新加载MYSQL转储的建库建表文件,我看了一下,转存的sql文件,也包含了建表都是使用的是utf8mb4,环境如之前的状态,我用RPA跑一下插入Excel里面的数据到mysql,

然后我在Navicat界面上,查询一下,我刚刚插入的数据,中文还是乱码:???,非中文都 没问题。

怪事,于是我查之前mysql转储过来的内容,,中文还是????,

反思:

那就是可以得出简单的结论,数据库没问题,为啥之前是能够正常显示中文,而现在不行,于是我尝试在Navicat上找原因,因数据库都一样了,之前不是乱码,突然现在乱码,那就前台的原因了。

百度了一下,Navicat的高级里面有编码,我当前是utf8,也就是65001,于是我换成gb2312或其他编码,仍然是一样的乱码,于是我认真找起这个Navicat来,连接进去就是数据库的字符集和表的字符集了,虽然字段也能设定编码,但是进去以后的编码统统都是utf8mb4,只能找外边了。外边有啥?也就是连接的字符集,我再看字符集的下拉列表,只有一个"自动",默认是这个,我于是选了这个,连接,查询一下数据,我发现,我刚刚插入的数据,还有通过转储建库带来的数据,中文都能正常显示了,看来是解决问题了。

总结:连接时的 自动 编码

"自动",就是当前不知道编码情况下,最好的选择方式,我想这里也是软件厂商在编码出为什么要增加一个"自动"的原因。

相关推荐
广州灵眸科技有限公司1 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒3 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手4 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学4 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh6 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户71333585156246 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z123456789867 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD7 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo7 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
用户71333585156247 小时前
MySQL - InnoDB 的 Buffer Pool
mysql