AgentSmith72
@AgentSmith72
JS - это моё хобби

Как конвертировать уже существующие записи в другую кодировку?

Здравствуйте! Можно ли конвертировать уже существующие записи в другую кодировку, и каким способом?
636a390642f76478002167.png
  • Вопрос задан
  • 515 просмотров
Решения вопроса 1
AgentSmith72
@AgentSmith72 Автор вопроса
JS - это моё хобби
mb_convert_encoding($city->name, "WINDOWS-1252");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Мне нужен рецепт
Рецепт зависит от ингридиентов, универсального рецепта нет.

Столбец name из кодировки utf8mb3_general_ci в utfmb4_general_ci
Просто смените ему кодировку, данные "сконвертируются" автоматически, так как "битность" существующих данных не поменяется. На всякий случай можно сделать копию таблицы и поиграться с ней перед сменой основной таблицы, но вообще-то разницы быть не должно.
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Столбец name из кодировки utf8mb3_general_ci в utfmb4_general_ci

Нужно потому что, в некоторых записях присутствуют некорректные символы.

Это безнадёжное занятие - данные УЖЕ повреждены.

В общем случае напрямую изменить кодировку поля нельзя - текущее значение может оказаться невалидным в новой кодировке. Следует создать новое поле с нужной кодировкой, после чего перезалить данные из неповреждённого источника. В крайнем случае - скопировать с преобразованием кодировки (функция CONVERT). Можно сделать это и на месте - сменить тип данных на BLOB, преобразовать кодировку, сменить тип данных на нужный.

Но в описанном случае можно выполнить изменение кодировки напрямую - UTF8MB3 есть подмножество UTF8MB4, и при смене кодировки опасности ошибки невалидного значения нет. DEMO fiddle. Впрочем, некорректные символы никуда не денутся.

===========================

Столбец name из кодировки utf8mb3_general_ci в utfmb4_general_ci

Это - не кодировки. Это COLLATION - набор правил сортировки символов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы