Прежде всего, «сопоставление базы данных» используется только по умолчанию.Реальный вопрос в том, что такое CHARACTER SET
из столбцов , которые вас интересуют.
Тогда, каковы байты в вашем клиенте ?Они закодированы как latin1
?Или utf8
?В любом случае, скажите MySQL, что именно это и произойдет.Это предпочтительно сделать в параметрах подключения.(Какой ваш клиентский язык?) В качестве альтернативы, используйте SET NAMES latin1
или SET NAMES utf8
, в соответствии с кодировкой клиента.
Теперь, что MySQL будет делать на INSERT
и SELECT
... Это будет преобразовать кодировку из кодировки клиента в кодировку столбца, как вы делаете INSERT
.Никаких дальнейших действий для этого не требуется.
Аналогично, MySQL преобразует другой путь во время SELECT
.
(Конечно, если столбец и клиент говорят одну и ту же кодировку, "конвертировать" не нужно.)
В вашем вопросе упоминается "сопоставление".До сих пор я говорил только о CHARACTER SETs
, также известной как «кодировка».В отличие от этого, сортировка и сравнение двух строк - это COLLATION
.
Для CHARACTER SET
latin1
, по умолчанию COLLATION
составляет latin1_swedish_ci
.
Для CHARACTER SET
utf8
, по умолчанию COLLATION
составляет utf8_general_ci
.
Существует несколько различных «сопоставлений» для обработки причуд немецких, турецких или испанских или (и т. Д.) Заказов.
Пожалуйста, объясните почему вы пытаетесь сделать то, что заявили.Есть много способов, которыми вы можете сделать это неправильно , поэтому я не хочу давать вам заявление ALTER
- оно может только ухудшить цель real .
Лучше использовать utf8mb4 вместо utf8.Внешний мир относится к UTF-8
;это эквивалентно MySQL utf8mb4
.
Edit (после OP's Edit)
Первый скриншот показывает "Mojibake".Еще один скриншот показывает вопросительные знаки.Причины каждого из них описаны в Проблема с символами UTF-8;то, что я вижу, не то, что я сохранил