У меня есть база данных, заполненная такими значениями, как « ♥•â—♥ Dhaka ♥•â—♥
(которая должна быть ♥•●♥ Dhaka ♥•●♥
), поскольку я не указывал сортировка при создании базы данных.
Теперь я хочу исправить это. Я не могу получить данные снова с того места, откуда я его получил. Поэтому я подумал, возможно ли получить данные в php-скрипте и преобразовать их в правильные символы.
Я изменил сортировку базы данных и полей в utf8_general_ci
..
Сопоставление не совпадает с набором символов. Сортировка используется только для сортировки и сравнения текста (вот почему там есть языковой термин). Фактический набор символов может отличаться.
Наиболее частой неудачей нет в базе данных, а скорее в связи между PHP и MySQL. Кодировка по умолчанию для соединения обычно – ISO-8859-1. Вам нужно изменить это, первое, что вы делаете после подключения, используя SQL-запрос SET NAMES 'utf-8';
или функцию mysql_set_charset .
Также проверьте набор символов ваших таблиц. Это может быть и неправильным, если вы не указали UTF-8 для начала (опять же: это не то же самое, что сортировка). Но обязательно сделайте резервную копию, прежде чем ничего менять. MySQL попытается преобразовать кодировку из предыдущей, поэтому вам может потребоваться перезагрузить данные из резервной копии, если вы действительно сохранили данные UTF-8 в таблицах ISO-8859-1.
Я бы посмотрел mb_detect_encoding () и mb_convert_encoding () и посмотрел, могут ли они помочь вам.