Как стать автором
Обновить

Комментарии 12

> Символьная таблица кириллических букв находится в ней на месте арабских символов

Во-первых, в latin1 нет кириллических букв.
Во-вторых, «арабских символов» в ней тоже нет.

Строка байт – это строка байт. А ошибка в кодировке – это ошибка в кодировке.

Хорошая матчасть по наборам символов тут. Процитирую:

Даже если вы полностью забыли всё то, что я вам только что объяснял, пожалуйста, помните один чрезвычайно важный факт. Не имеет смысла иметь строку, не зная, в какой она кодировке. Вы больше не можете засунуть голову в песок и притвориться, что это «простой» текст в ASCII.
Нет Такой Вещи Как Простой Текст.
во-первых — этоту посту место в блоге MySQL, веб-разработки тут нет вообще.

во-вторых, заголовок неадекватный. Лучше было бы «как перекодировать в MySQL ....». Хотя если перенести весь пост в MySQL — тогда заголовок годится, неоднозначность снимается.

а в-третьих, такая проблема легко решается средствами самого MySQL — перекодировать через binary- и об этом только ленивый не писал еще.
Перенёс в MySQL. Про перекодирование через binary нигде не видел. Видимо, те, кто у меня постоянно спрашивает, тоже этого не могут найти. Поэтому и написал такую статью.
1. Сделайте дамп существующих данных
2. Перезалейте его (можно через консоль) с указанием параметра --default-character-set=cp1251
3. Profit!
НЛО прилетело и опубликовало эту надпись здесь
Когда много таблиц залито неправильно то легче перезалить из отредактированного дампа
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
о latin1. Эта кодировка (также известна как windows-1252)
Не вполне корректное утверждение, в целом это разные кодировки.
Сделал по вашей схеме, только через консоль, т.к. файл весит 67Мб

-bash-3.2$ iconv -c -f utf8 -t cp1252 file.sql > file-1252.sql
-bash-3.2$ iconv -c -f cp1251 -t utf8 file-1252.sql > file-utf8.sql

Спасибо.
или проще
iconv -f utf8 -t cp1252 file.sql | iconv -f cp1251 -t utf8 > file-utf8.sql
можно ещё заменить сразу кодировку схем таблиц
iconv -f utf8 -t cp1252 file.sql | iconv -f cp1251 -t utf8 | sed -e 's/latin1/utf8/g' > file-utf8.sql
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории