powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / перекодировка из win1251 в UTF-8
15 сообщений из 15, страница 1 из 1
перекодировка из win1251 в UTF-8
    #38727775
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет
у меня вопрос: можно ли и как перекодировать базу данных win1251 в UTF-8?
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38728151
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй через полный бэкап...
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38728805
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
не совсем понял...
надо в phpMyAdmin сделать экспорт с какими-то настройками?
или mysqldump?
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38729418
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем виде задача решается примерно так (один из способов):
1. Делаете дамп существующей базы при помощи штатного mysqldump или другого средства.
2. Перекодируете файл дампа в нужную кодировку (из cp1251 в utf-8) при помощи iconv, например.
3. В дампе меняете указание кодировок для таблиц и полей (cp1251 на utf8) при помощи sed или другого редактора.
4. Заливаете дамп в базу.

Если нет полной уверенности, то лучше сначала залить дамп в тестовую базу и убедиться, что всё в порядке.

Разумеется, это будет работать если только в существующей базе нет косяков, вроде несоответствия кодировки таблицы и данных. Ну и иногда бывают нюансы, конечно же. Сам по себе этот способ мне нравится тем, что в дампе можно визуально проконтролировать все изменения.
При необходимости структуру и данные можно в новую базу перегонять отдельными дампами.
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38729739
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleВ общем виде задача решается примерно так (один из способов):
1. Делаете дамп существующей базы при помощи штатного mysqldump или другого средства.
2. Перекодируете файл дампа в нужную кодировку (из cp1251 в utf-8) при помощи iconv, например.
3. В дампе меняете указание кодировок для таблиц и полей (cp1251 на utf8) при помощи sed или другого редактора.
4. Заливаете дамп в базу.
приблизительно так это и представлял...
но не понял ваш 2-й пункт = а зачем сам файл sql-скрипта перекодировать?
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38729742
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboyа зачем сам файл sql-скрипта перекодировать?За тем, что Вы хотите
buyboyперекодировать базу данных win1251 в UTF-8
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38729748
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЗа тем, что Вы хотите
а если я не перекодирую sql-скрипт, а просто поменяю в нем кодировку для таблиц и полей?
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38731469
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboy, все ясно. используйте sypex dumper. там в документации написано как делать перекодировку.
и про бекап не забудьте
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38731713
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboyvkleЗа тем, что Вы хотите
а если я не перекодирую sql-скрипт, а просто поменяю в нем кодировку для таблиц и полей?А Вы попробуйте. Не, ну можете пробовать не на живой базе, а просто мысленно проиграть предполагаемый Вами сценарий.

PS: Если в дампе не будет кириллицы, то всё будет в порядке.
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38732482
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindbuyboy, все ясно. используйте sypex dumper. там в документации написано как делать перекодировку.
и про бекап не забудьте
большое спасибо!
это бесплатная софтина?
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38732484
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vklebuyboyпропущено...

а если я не перекодирую sql-скрипт, а просто поменяю в нем кодировку для таблиц и полей?А Вы попробуйте. Не, ну можете пробовать не на живой базе, а просто мысленно проиграть предполагаемый Вами сценарий.

PS: Если в дампе не будет кириллицы, то всё будет в порядке.
гут! спасибо!
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38732599
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboy, гуглить уже не в моде?
это такой пшп-скрипт. с прибабахом, но людям нравится.
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38732762
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да у субд вообщемто есть своя функция перекодирования.

итак...вцелом тут 2задачи быает

1 ИЗ цепочки байт в кодировке КОД1 получить цепочку байт в кодировке КОД2
по идее, если в одном поле храниться текст в одной кодировке, в другом в другой оно само
при присвоении это сделает

проверяем. ааа(ch - cp1251,ch2-utf8) в оба записали букву я

select hex(ch),hex(ch2) from aaa;
"FF",\N
\N,"D18F"
update aaa set ch = ch2 where ch is null;
update aaa set ch2 = ch where ch2 is null;

select hex(ch),hex(ch2) from aaa;
"FF","D18F"
"FF","D18F"

как видим, субд понимает что такое кодировка текста.

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

тут идя по варианту 1 можем получать непредвиденные ситуации.

по таблице предыдущей создадим такую ошибку

update aaa set ch = unhex(hex(ch2)) ;
select hex(ch),hex(ch2) from aaa;
"D18F","D18F"
"D18F","D18F"

как видим, теперь в однобайтовой кодировке (первый столбик) лежит буква я записанная
в ютф

теперь если
update aaa set ch2 = ch ;
select hex(ch),hex(ch2) from aaa;
"D18F","D0A1D08F"
"D18F","D0A1D08F"
ибо субд каждый байт из первой, закодировала в два байта по правилам второй колонки

как уже смекнул читатель, переносить нужно было через функцию unhex(hex(value))

дело в том, что unhex возвращает бинарные вычисленные данные, и как следсвие понятие
кодировки к ним субд не применяет, поэтому чтобы перенести данные мужду столбцами
с разными кодировками но без перекодирования, нужно ити путём
col1 = unhex(hex(col2))
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38733905
buyboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,
круть... спасибище...
но мой моцк - вспотел...
...
Рейтинг: 0 / 0
перекодировка из win1251 в UTF-8
    #38733987
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buyboy, он вообще на своей волне. и вы не описали никаких фактов, из которых следовало бы, что вам это нужно читать и понять.
попробуйте sypex. все остальное потом.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / перекодировка из win1251 в UTF-8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]