Преобразование latin1_swedish_ci в utf8 с PHP

У меня есть база данных, заполненная такими значениями, как ♥•â—♥ Dhaka ♥•â—♥ (которая должна быть ♥•●♥ Dhaka ♥•●♥), поскольку я не определял сортировку при создании базы данных.
Теперь я хочу исправить это. Я не могу получить данные снова с того места, откуда я его получил. Поэтому я подумал, возможно ли получить данные в PHP скрипт и преобразовать их в правильные символы.
Я изменил сортировку базы данных и полей на utf8_general_ci..

Ответ 1

Параметры сортировки НЕ совпадают с набором символов. Сортировка используется только для сортировки и сравнения текста (вот почему там есть языковой термин). Фактический набор символов может отличаться.

Наиболее распространенная ошибка не в базе данных, а в соединении между PHP и MySQL. Кодировка по умолчанию для соединения обычно ISO-8859-1. Вы должны изменить это в первую очередь после подключения, используя SQL-запрос SET NAMES 'utf-8'; или функция mysql_set_charset.

Также проверьте набор символов ваших таблиц. Это также может быть неправильно, если вы не указали UTF-8 для начала (опять же: это не то же самое, что сортировка). Но обязательно сделайте резервную копию, прежде чем что-то менять здесь. MySQL попытается преобразовать кодировку из предыдущей, поэтому вам может потребоваться перезагрузить данные из резервной копии, если вы действительно сохранили данные UTF-8 в таблицах ISO-8859-1.