Какой набор символов используют поля в вашей таблице?Не могли бы вы поделиться соответствующей частью команды SHOW CREATE TABLE для этих полей?
Поскольку ISO-8859-1 является кодировкой базы данных по умолчанию для mysql, и он в основном не выполняет никаких преобразований, люди используют его как BINARY и просто сохраняют в нем кодировку UTF-8.Это хорошо работает с инструментами веб-разработки, поскольку они связываются с полем и получают данные в виде двоичных байтов в кодировке UTF-8, а затем, без преобразования, помещают их на веб-страницу, которая говорит, что для вывода используется кодировка utf-8.Таким образом, данные просто проходят без надлежащего кодирования для использования базой данных.Конечно, это вызывает всевозможные проблемы, когда вы выполняете операции внутри базы данных (например, получаете длину символа и байта и пытаетесь правильно отсортировать).Но для базовых операций сохранения / извлечения похоже, что это работает.Это очень типичное поведение для нелокализованных веб-приложений, которые предполагают, что они максимально работают с ASCII или ISO-8859-1.Решение этой проблемы заключается в создании нового набора таблиц с использованием кодировки UTF-8, а затем в явном виде транскодируют неправильно закодированные данные utf-8 в широкие символы и затем помещают их в таблицу utf-8, чтобы база данных знала правильную кодировку.б.