Pull to refresh

Comments 12

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

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

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

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

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

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

а в-третьих, такая проблема легко решается средствами самого MySQL — перекодировать через binary- и об этом только ленивый не писал еще.
Перенёс в MySQL. Про перекодирование через binary нигде не видел. Видимо, те, кто у меня постоянно спрашивает, тоже этого не могут найти. Поэтому и написал такую статью.
1. Сделайте дамп существующих данных
2. Перезалейте его (можно через консоль) с указанием параметра --default-character-set=cp1251
3. Profit!
UFO landed and left these words here
Когда много таблиц залито неправильно то легче перезалить из отредактированного дампа
UFO landed and left these words here
UFO landed and left these words here
о 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
Sign up to leave a comment.

Articles