Mysql8: в какой набор символов сервер должен переводить операторы после их получения при использовании интродуктора? - PullRequest
0 голосов
/ 11 июля 2020

Согласно документации MYSQL8:

На несколько вопросов о наборе символов и обработке сопоставления для клиентских соединений можно ответить в терминах системных переменных:

  • В каком наборе символов используются операторы, когда они покидают клиента? Сервер принимает системную переменную character_set_client как набор символов, в котором операторы отправляются клиентом.
  • В какой набор символов сервер должен переводить операторы после их получения? Чтобы определить это, сервер использует системные переменные character_set_connection и collation_connection: Сервер преобразует операторы, отправленные клиентом, из character_set_client в character_set_connection. Исключение: для строковых литералов, у которых есть интродуктор, такой как _utf8mb4 или _latin2, интродьюсер определяет набор символов. См. Раздел 10.3.8, «Представители наборов символов».

Прочитав цитату, запуталась. Сообщает ли документ нам, что если используется интродуктор, он заменит кодировку character_set_connection?

Или позвольте мне привести конкретный пример c, есть ли разница между выполнением select _gbk '中文'; и выполнением select '中文';? Как вводящий _gbk влияет на преобразование набора символов сервера для операторов?

Надеюсь, кто-нибудь поможет мне объяснить значение официальных описаний и этого моего примера, большое спасибо.

Ссылка на ссылку: charset-connection

1 Ответ

0 голосов
/ 13 июля 2020

Разница между select _gbk '中文' и select '中文' заключается в том, что в select _gbk '中文', '中文' понимается, когда он передается от клиента на сервер, как набор символов GBK, тогда как в select '中文', '中文' понимается как набор символов, найденный в character_set_client.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...