LINUX.ORG.RU

mysql кодировка

 


0

1

Таблица в базе хранится в UTF-8 Но сам текст закодирован win 1252

Соответственно всякие вызовы вроде ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

ни к чему не приведут так как таблица и так в кодировке utf8

Но буковки представлены кодами win1252 И что делать?


Я пробовал делать экспорт таблиц с указанием при экспорте win1252

Почти то

Но при этом пропадают некоторые символы Например с отображается как �?

При этом на самом сайте при работе не видно никаких отклонений или не правильно отображающихся символов

mirek
() автор топика
Последнее исправление: mirek (всего исправлений: 1)

Сделай нормальную миграцию. Создай новое поле для текста, модифицируй код так, чтобы записывать в базу обе версии (но читать из неё только старую). Затем запусти бэкграунд-процесс, который будет по очереди брать записи из базы, перекодировать, и записывать нормальную версию. Когда закончишь, переключись на новую версию. Затем сотри старое поле.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

Ну вот тут есть вариант с написанием доп. утилиты https://habr.com/ru/post/137061/

А проще нельзя это решить ? При экспорте теряются всего несколько символов

Может можно чем-то перекодировать sql файл ?

Терминальный iconv я пробовал Он также как и команды SQL ничего не меняет

mirek
() автор топика

С однобайтовыми прокатывало сначала конвертнуть в BINARY, а потом в нужную.

anonymous
()
Ответ на: комментарий от Miguel

Как не так? iconv -f WINDOWS-1252 -t UTF-8 ‘data_7.sql’ -o dump.sql

Вот команда Буковки не меняются

mirek
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.