07|乱码是怎么产生的,以及如何避免?
俊达
你好,我是俊达。
不知道你在平时工作中是否遇到过乱码问题?我最早遇到的乱码问题还是刚开始学 C 语言编程时,有时候在 Console 上会输出“烫烫烫”这样的信息。在使用 MySQL 时,也遇到过各种乱码,乱码可能会以不同的形式出现。
那么在这一讲中,我们就来分析 MySQL 中出现乱码的几种不同情况,以及乱码产生的底层原因,从而掌握处理和避免乱码问题的方法。
编码与解码
平时我们会使用文字和符号来进行交流,比如“中文符号”就是一个有明确含义的词组。我们也知道计算机底层是使用二进制来存储和传输数据,那么计算机如何以二进制的形式来表示“中文符号”这个词组呢?这就涉及到字符的编码了。对于中文字符,比较常用的编码方式就包括 GBK、UTF8,当然也包括其他一些编码方式,但我们这里就不过多讨论了,因为底层原理是一样的。
“中文符号”使用 GBK 编码后,是这个样子的。
而使用 UTF8 编码时,是这个样子的。
我们可以在网上找到 GBK 的编码表,也可以找到 Unicode 的表,而 Unicode 可以用明确的算法转换成 UTF8 编码。这里我们提供一个简便的方法,使用 Python(python2) 来获取字符的编码。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. 乱码产生的原因主要是由于字符集编码和解码不匹配导致的,程序无法准确判断数据的编码方式,因此容易出现乱码问题。 2. MySQL中的字符集变量和表、列的字符集属性的设置对于避免乱码问题至关重要,需要正确设置这些变量和属性以确保数据的正确编码和解码。 3. 通过正确设置字符集变量和表、列的字符集属性,可以有效避免MySQL中出现乱码问题,确保数据的正确编码和解码。 4. 在进行数据迁移、数据导入导出后,需要重点检查是否有乱码产生,字符集设置不对可能会导致乱码问题。 5. 在执行DDL时,如果终端环境和数据库字符集参数设置不一致,并且DDL中使用了中文符号,也可能会产生乱码。 6. 在使用mysqldump备份时,建议统一都指定 utf8mb4 字符集。 7. 根据需要存储和处理的文本类型决定使用哪种字符集,一般如果要处理中文,可以选择GBK或UTF8字符集。 8. 客户端需要设置正确的字符集,要和程序中数据的实际编码保持一致。 9. MySQL中,建议使用 utf8mb4 字符集,因为MySQL中UTF8字符集实际上是 utf8mb3,无法存储4字节的Unicode编码,如emoji字符。 10. 数据库中,建议选择一种统一的字符编码,尽量避免使用多种不同的字符集。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》,新⼈⾸单¥59
《MySQL 运维实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论