Обсуждение:Изменение кодировки MySQL-базы с latin1 на cp1251
Материал из 1GbWiki.
(Различия между версиями)
Версия 08:12, 18 августа 2008 (править) Teak (Обсуждение | вклад) ← К предыдущему изменению |
Текущая версия (19:46, 28 января 2011) (править) (отменить) Dmih (Обсуждение | вклад) м |
||
(11 промежуточных версий не показаны.) | |||
Строка 5: | Строка 5: | ||
:По ссылке какая-то фигня. Нам не надо ничего перекодировать, нам надо изменить мнение MySQL о том, какая там кодировка. В реальности-то там всё равно cp1251, а не latin1, но MySQL думает иначе, из-за чего не работает сортировка и тому подобные вещи. Собственно, можно то же самое делать и через дамп, но не путём его перекодирования, а путём замены строк latin1 на cp1251 и latin1_swedish_ci (или latin1_bin) на cp1251_general_ci, но и это не совсем просто, поскольку те же названия кодировок могут оказаться не только в названиях таблиц, но и в самих данных. То есть для нормального решения этой проблемы (в стиле готового рецепта, без ручной доработки напильником и ручного ковыряния дампа в текстовом редакторе) нам бы пришлось парсить SQL-дамп полноценным образом, а это уж точно не проще, чем то, что сделал я. И однозначно дольше. [[Участник:Teak|Teak]] 12:12, 18 августа 2008 (MSD) | :По ссылке какая-то фигня. Нам не надо ничего перекодировать, нам надо изменить мнение MySQL о том, какая там кодировка. В реальности-то там всё равно cp1251, а не latin1, но MySQL думает иначе, из-за чего не работает сортировка и тому подобные вещи. Собственно, можно то же самое делать и через дамп, но не путём его перекодирования, а путём замены строк latin1 на cp1251 и latin1_swedish_ci (или latin1_bin) на cp1251_general_ci, но и это не совсем просто, поскольку те же названия кодировок могут оказаться не только в названиях таблиц, но и в самих данных. То есть для нормального решения этой проблемы (в стиле готового рецепта, без ручной доработки напильником и ручного ковыряния дампа в текстовом редакторе) нам бы пришлось парсить SQL-дамп полноценным образом, а это уж точно не проще, чем то, что сделал я. И однозначно дольше. [[Участник:Teak|Teak]] 12:12, 18 августа 2008 (MSD) | ||
+ | :: Все равно мне непонятно, почему здесь не может помочь программа-перекодировщик. По ссылке приведен один из лучших перекодировщиков, который я когда-либо видел. "Сьедает" любые кодировки и преобразует их в читаемый cp1251, причем проглатывает файлы и со смешанными кодировками. [[Участник:81.1.243.193|81.1.243.193]] 11:07, 19 августа 2008 (MSD) | ||
+ | :::А Вы попробуйте. :) Я в общем всё уже объяснил. [[Участник:Teak|Teak]] 14:40, 19 августа 2008 (MSD) | ||
+ | ::::P.S.: «Топор тут не поможет, потому что рубить ничего не надо» — «Всё равно не понимаю, почему тут не поможет этот топор? Ведь это не просто топор, а лучший топор в мире!» :) [[Участник:Teak|Teak]] 14:46, 19 августа 2008 (MSD) | ||
+ | |||
+ | Кажется все понял. Ступил малость. [[Участник:81.1.243.193|81.1.243.193]] 10:32, 20 августа 2008 (MSD) | ||
+ | |||
+ | Нет ли аналогичного php-скрипта? | ||
+ | :У меня нет, а есть ли вообще — не знаю. Наверное у кого-то есть. Хотя смысла искать его я не вижу никакого, зачем искать на PHP то, что уже есть на перле? Не на сайт же этот скрипт устанавливать, он вообще одноразового применения, и соответственно всё равно на чём написан. [[Участник:Teak|Teak]] 22:07, 8 июня 2009 (MSD) | ||
+ | |||
+ | |||
+ | кг/ам. см. ALTER TABLE(DATABASE) `name` CONVERT TO CHARACTER SET 'charset'; | ||
+ | :: это не гк/ам, суть непонятных вам приседаний даже на странице обсуждений уже объяснялась. |
Текущая версия
К чему такие сложности? Не проще ли бэкап просто перекодировать любым доступным перекодировщиком, которых сейчас можно найти множество (например см. http://www.listsoft.ru/?id=1177), а затем залить базу обратно на сервер. По-моему это проще удобнее.
Хотя скрипт конечно впечатляет :)))
- По ссылке какая-то фигня. Нам не надо ничего перекодировать, нам надо изменить мнение MySQL о том, какая там кодировка. В реальности-то там всё равно cp1251, а не latin1, но MySQL думает иначе, из-за чего не работает сортировка и тому подобные вещи. Собственно, можно то же самое делать и через дамп, но не путём его перекодирования, а путём замены строк latin1 на cp1251 и latin1_swedish_ci (или latin1_bin) на cp1251_general_ci, но и это не совсем просто, поскольку те же названия кодировок могут оказаться не только в названиях таблиц, но и в самих данных. То есть для нормального решения этой проблемы (в стиле готового рецепта, без ручной доработки напильником и ручного ковыряния дампа в текстовом редакторе) нам бы пришлось парсить SQL-дамп полноценным образом, а это уж точно не проще, чем то, что сделал я. И однозначно дольше. Teak 12:12, 18 августа 2008 (MSD)
- Все равно мне непонятно, почему здесь не может помочь программа-перекодировщик. По ссылке приведен один из лучших перекодировщиков, который я когда-либо видел. "Сьедает" любые кодировки и преобразует их в читаемый cp1251, причем проглатывает файлы и со смешанными кодировками. 81.1.243.193 11:07, 19 августа 2008 (MSD)
Кажется все понял. Ступил малость. 81.1.243.193 10:32, 20 августа 2008 (MSD)
Нет ли аналогичного php-скрипта?
- У меня нет, а есть ли вообще — не знаю. Наверное у кого-то есть. Хотя смысла искать его я не вижу никакого, зачем искать на PHP то, что уже есть на перле? Не на сайт же этот скрипт устанавливать, он вообще одноразового применения, и соответственно всё равно на чём написан. Teak 22:07, 8 июня 2009 (MSD)
кг/ам. см. ALTER TABLE(DATABASE) `name` CONVERT TO CHARACTER SET 'charset';
- это не гк/ам, суть непонятных вам приседаний даже на странице обсуждений уже объяснялась.