To help colleagues deal with a tricky business today, the problem is this:
Regardless of which version of the MySQL client the client connects to the server, it is found that as long as the server side is set
After character-set-server = UTF8,
Character_set_client, Character_set_connection, Character_set_results
will always be consistent with the server side, even if the MySQL client plus options
--default-character-set=utf8
No, not until you connect, and then manually execute the command.
Set names Latin1 will change the character set of client, connection, and results.
After careful comparison, I finally found that the place where I went to the pit was that the server side set another option:
Skip-character-set-client-handshake
The explanation for this option on the document is this:
--character-set-client-handshake
Don ' t ignore character set information sent by the client. to ignore client information with the default server character set, use--skip-character-set-client-handshake; This is makes MySQL behave like MySQL 4.0
In this sense, it is also beneficial. For example, when you enable the Skip-character-set-client-handshake option, you can avoid client program misoperation, use other character sets to connect in and write data, which causes garbled problems.