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