set names这个mysql命令设置的是客户端发出命令的编码、连接层的编码以及服务端返回结果的编码,相当于是客户端和服务器交互用的编码,而不是数据保存的编码,由于CMD界面默认的字符集为gbk,所以在在执行查询前使用set names gbk来设置编码为gbk可以防止乱码。