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
Copy Code code as follows:
Character-set-server = UTF8
After
Copy Code code as follows:
Character_set_client, Character_set_connection, Character_set_results
will always be consistent with the server side, even if the MySQL client plus options
Copy Code code as follows:
--default-character-set=utf8
No, not until you connect, and then manually execute the command.
Copy Code code as follows:
, will be the client, connection, results character set to change.
After careful comparison, I finally found that the place where I went to the pit was that the server side set another option:
Copy Code code as follows:
Skip-character-set-client-handshake
The explanation for this option on the document is this:
Copy Code code as follows:
--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.