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,只能找外边了。外边有啥?也就是连接的字符集,我再看字符集的下拉列表,只有一个"自动",默认是这个,我于是选了这个,连接,查询一下数据,我发现,我刚刚插入的数据,还有通过转储建库带来的数据,中文都能正常显示了,看来是解决问题了。

总结:连接时的 自动 编码

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

相关推荐
Rain的Java大神之路8 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
十二同学啊8 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技9 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰79810 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky10 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐12 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB12 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶12 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax12 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB12 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析