Мне нужно изменить класс, в котором (помимо прочего) строки UTF-8 неправильно кодируются дважды:
$string = iconv('ISO-8859-1', 'UTF-8', $string);
:
$string = utf8_encode($string);
Эти ошибочные строки были сохранены в нескольких полях таблицы по всей базе данных MySQL.Все затронутые поля используют параметры сортировки utf8_general_ci
.
. Обычно я устанавливаю небольшой сценарий исправления PHP, циклически проходя через затронутые таблицы, выбирая записи, исправляя ошибочные записи, используя utf8_decode()
на двойномзакодированные поля и ОБНОВЛЕНИЕ их.
Поскольку на этот раз я получил много огромных таблиц, и ошибка затрагивает только умлауты Германии (äöüßÄÖÜ), мне интересно, есть ли решение умнее / быстрее этого.
Являются ли чистые решения MySQL, такие как следующие, безопасными и рекомендуемыми?
UPDATE `table` SET `col` = REPLACE(`col`, 'ä', 'ä');
Какие-либо другие решения / лучшие практики?