Как преобразовать неправильно кодированные данные в UTF-8?

Я работаю с данными из старой базы данных mysql. В этой базе данных есть таблица со строковым столбцом с кодировкой «cp1252 западноевропейский (latin1)» (такой же, как Windows-1252). При запросе данных из командной строки mysql данные из этого поля представлены в виде:

Obama’s

Это должно читать

Obama's

Я пробовал следовать принятому ответу « Как конвертировать весь набор символов базы данных MySQL и сопоставление с UTF-8? для преобразования поля в UTF-8 в MySQL, но это не имеет значения.

Я также попытался вставить новую строку в эту таблицу, используя Obama's качестве текста для этого поля (опять же из командной строки mysql). Однако этот текст правильно представлен, когда я затем запрашиваю ту же строку, которую я только что вставил. Я попытался выполнить эту вставку, когда поле было установлено на latin1 и когда оно было установлено в UTF-8. Тот же результат.

Это заставляет меня думать, что когда плохие данные были вставлены в базу данных, это было сначала неправильно закодировано PHP. Здесь он становится нечетким для меня.

Я могу предположить, что данные были вставлены через веб-форму и обработаны с помощью PHP. Что сделал PHP с ним, прежде чем вставлять его в базу данных? Преобразовал ли он строку в UTF-8, которая, согласно таблице на этой полезной странице , использует три байта %E2 %80 %99 для представления символа. У меня есть это право?

Если это правильно, каковы мои варианты восстановления этих данных? Я хотел бы преобразовать таблицу и ее поля в кодировки UTF-8, но это, похоже, не исправляет текст. Должен ли я писать сценарий, который вручную изменяет эти символы, какими они должны быть?

Solutions Collecting From Web of "Как преобразовать неправильно кодированные данные в UTF-8?"