第三张图显示,插入数据的程序也是问题不大。虽然没有调用 SET NAMES UTF8,但基于服务器端的设置,缺省应该就是 UTF8。(当然,也许存在一种可能,就是 mysqli 有自己的缺省值设置,而你的环境中缺省值并不是 UTF8,那就有问题了。mysqli 我不熟,你自己确认吧。但只要你显式调用 SET NAMES UTF8,这个环节就肯定没问题了)
第四张、第五张图,是两种不同的客户端程序。前者不可能支持 UTF8 字符输出,所以你一定要调用 SET NAMES GBK,否则就会出现乱码。你看到的很可能就是这种情形——数据本身没有问题,只是在客户端显示乱码了。后者应该可以设置编码方式:或者是通过 SET NAMES ... 来要求服务器以某种编码方式进行传输,或者是客户端程序自己工作在某种编码方式,应该都可以。