mysql乱码怎么回事 mysql乱码怎么解决( 二 )


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乱码怎么回事的信息别忘了在本站进行查找喔 。

推荐阅读