MySQL切换字符编码集解决中文乱码

以下是utf-8和gbk的区别,转自百度知道

  1. GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。
  2. UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则zd用UTF-8 节省空间。另外,如果是外国人访问你的GBK网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。
  3. GBK包含全部中文字符;

简单总结一下,区别就是gbk编码格式下,一个中文对应2个字节;

utf8编码格式下,一个中文对应3个字节;选用编码的不同会导致乱码的情况

乱码问题

乱码问题2

上面2张图片能代表绝大多数的乱码问题,解决这问题的核心思路是存取数据或者记录时字符编码需保持一致

在MySQL中,我创建数据库设置字符集编码为UTF8,那么我写的SQL文件编码也应该是UTF8,CMD窗口显示的编码也应该按照UTF8编码显示

临时修改CMD窗口中的字符集编码为UTF8的命令为:

shell> chcp 65001

注意:此方法仅仅是临时修改,cmd窗口关闭机会失效,又回到936 简体中文 GBK了

同理:想回到简体中文编码为GBK命令为

shell> chcp 936

CMD属性界面

========

补充说明:

以上解决的方法是我在学习MySQL初期的时候解决的,随着深入学习了MySQL,发现解决MySQL中文乱码很简单,即在SQL文件开头规定MySQL客户端工具提交的SQL代码为UTF8即可

SET NAMES UTF8;

========

一般来说我们安装Windows系统都会选择以简体中文的模式,这样Windows系统就会默认系统语言为GBK,这一般会写进注册表。常见的例子就是我们平常写的txt文本文件,默认就是GBK,有人会反驳,记事本另存为的时候显示的ANSI,其实这就是微软聪明的地方,如果你选择简体中文那么ANSI就代表GBK,阿拉伯版本的Windows ANSI就代表ASMO-708,换言之ANSI在每个国家都是不同的,不用uft8的原因是,占用存储太大。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×