2)表编码和客户端的编码一致,但是记录之间编码存在不一致的情形
比如表编码是 utf8mb4,应用端编码也是 utf8mb4,但是表里的数据可能一半编码是 utf8mb4,另外一半是 gbk 。那么此时表的数据也是正常的,不过此时采用哪种编码都读不到所有完整的数据 。这样数据产生的原因很多 , 比如其中一种可能性就是表编码多次变更而且每次变更不彻底导致(变更不彻底,我之前的篇章里有介绍) 。举个例子,表 t3 的编码之前是 utf8mb4,现在是 gbk,而且两次编码期间都被写入了正常的数据 。
3)每个字段的编码不一致 , 导致乱码和第二点一样的场景 。不同的是:非记录间的编码不统一,而是每个字段编码不统一 。举个例子,表 c1 字段 a1,a2 。a1 编码 gbk,a2 编码是 utf8mb4 。那每个字段单独读出来数据是完整的 , 但是所有字段一起读出来 , 数据总会有一部分乱码 。
三、LATIN1
【mysql乱码怎么回事 mysql乱码怎么解决】还有一种情形就是以 LATIN1 的编码存储数据
估计大家都知道字符集 LATIN1,LATIN1 对所有字符都是单字节流处理,遇到不能处理的字节流,保持原样,那么在以上两种存入和检索的过程中都能保证数据一致,所以 MySQL 长期以来默认的编码都是 LATIN1 。这种情形,看起来也没啥不对的点,数据也没乱码 , 那为什么还有选用其他的编码呢?原因就是对字符存储的字节数不一样,比如 emoji 字符 "?",如果用 utf8mb4 存储,占用 3 个字节,那 varchar(12) 就能存放 12 个字符,但是换成 LATIN1,只能存 4 个字符 。
mysql乱码怎么回事的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql乱码怎么解决、mysql乱码怎么回事的信息别忘了在本站进行查找喔 。
推荐阅读
- Mac网络营销毕业设计,网络营销毕业设计目录
- 关于安卓平板哪个游戏性价比高的信息
- 鸿蒙生态app目前有哪些,鸿蒙生态系统
- 直播玩法技巧口诀,直播的玩法
- vb.net清空文本框 vb清空文本框内容代码
- postgre新建表的简单介绍
- 阿里云服务器续费不了,阿里云续费后无法访问
- linux维护命令 linux 维护
- 显卡驱动游戏速度慢怎么办,steam游戏速度慢怎么办