БлогNot. Как восстановить испорченный UTF-8 в таблице БД

Как восстановить испорченный UTF-8 в таблице БД

Многие сталкивались с таким волшебством как двойная перекодировка, когда вместо "ПерС" видишь в базе "ПерС".

Вероятная причина таких вещей - либо в структуре таблицы написано, либо же скрипт при "переезде" базы подумал, что текстовое поле сохранено в кодировке utf-8, как и вся таблица, а оно было на самом деле в cp1251.

В принципе, для обычной задачи восстановления русского текста, перекорёженного между Windows-1251 и UTF-8, нетрудно написать скрипт или программку, которая лечит это, просто вылавливая из файла бинарные двухбайтовые коды UTF-8 и сопоставляя их с однобайтовыми кодами Windows-1251 по таблице.

Но не было ни времени, ни сил, а требовалось восстановить две таблички с типичными "РЎР±РѕСЂ статистики" вместо русского текста.

Программки с развалов (TCode, Штирлиц и т.п.) не помогли совсем, а помог этот онлайн-сервис с такими настройками:

настройки "Универсального декодера", которые помогли
настройки "Универсального декодера", которые помогли

То, что в файле уже было Юникодом, убилось закрокозябрилось, но мне-то нужна была часть дампа базы MySQLi, которая содержала испорченную кириллицу, просто вырезал её из результата обработки, вернул в дамп экспортированной из phpMyAdmin таблицы и импортировал файл с дампом обратно на хост.

02.01.2021, 00:49 [360 просмотров]


теги: памятка textprocessing сервис сервер ошибка форматы mysql