// 显示有关字符集的环境变量和参数,必须要先选择那个数据库 use database ***才能查看它的正确的character_set_database的值。
show variables like "%character%";
// character_set_client | gbk 客户端字符集 可以通过set charscter_set_client=binary 这个设置成二进制可防止注入,因为这一步是转换的,所以随便设置。
// character_set_connection | gbk 连接字符集 二进制转换后,要通过这个再来转换,一般转换成你之前插入的字符集,比如你能输入汉字,你一般用的是gbk或 者utf8,没有设置就是系统默认的字符集,别搞错了。
// character_set_results | gbk 结果字符集 这一步因为是dattabas转换成的最终结果,转换成之后,它就直接返回出去不会进行转换了。
// character_set_database | latin1 当前选择的数据库字符集,这一步也进行了转换,如果是汉字别搞成英文字符的
// character_set_filesystem | binary 文件系统字符
// character_set_server | latin1 默认操作字符集
// character_set_systm | utf8 系统元数据字符集
// character_set_dir |e:\mysql\share\charsets\ mysql字符设置目录、
character_set_client | binary 这个字符集我认为是从客户端发送的字符集,也就是说客户端我们所看到的本身的字符集不是通过这个参数设置的。这个要设置成binary
character_set_connection | gbk 如果你输入的有汉字或多字节的字符的话,这里设置成gbk或者utf8比较好,
character_set_database | gbk,这个跟连接字符集设置成一样比较好,这样就减少转换。
character_set_results | gbk 结果字符集,这个是重中之重,必须要设置成跟你的插入的数据要一致,如果没指定的话就跟你的数据库的字符或者系统默认的字符集一致。
我测试了很多次,改了client,connection,database的都没问题,但是一改掉character_set_results就出现乱码,具体原因不祥,所以这个设置最好跟connection一样。前面一般不会错,关键这一步是返回,他返回的是跟你之前输出的字符集是一样的,他不进行转换,所以这步不能错。我将这个转换成utf8居然是乱码,为些我将其它的,包括插入字段,表,数据库的字符集,连接的等等都改成utf8还是乱码,这个非得要gbk才不是,我把系统默认的也改成utf8了还是不行。所以这个可能是我的测试问题。改完之后退出mysql再重新进入,是修改之前的,改掉的竟然保存不了。以后看会不会找出问题的所在。