SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.06.2010 02:19:33

NARKOZ
Участник
Зарегистрирован: 18.08.2009
Сообщений: 14

конвертирование БД из одной кодировки в другую

У меня такая банальная проблема.

Сервер БД MySQL на \s выдает:

Код:

Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1

На phpmyadmin

Сопоставление соединения с MySQL: utf8_general_ci

На вкладке операции с БД показывается

Сравнение: utf8_general_ci

На сайтах все прекрасно отображается (почти). Однако! В БД все данные отображаются крякозябрами. Обнаружил, что это windows-1252. Меня, конечно, это не устраивает, кроме того, уже проблемы из-за этого тоже возникали.

Хочу нормализовать эту ситуацию. Однако бэкап одной БД получается в размере около 22 МБ. Соответственно, все операции с файлом обречены на крах. Что можно сделать? iconv или чем-то еще? Может альтернативы есть? Почему так случается? Что делать в дальнейшем чтобы избежать таких ситуаций?

Буду благодарен за любую помощь.

версия сервера 5.1

Отредактированно NARKOZ (28.06.2010 02:20:14)

Неактивен

 

#2 28.06.2010 02:27:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5840

Re: конвертирование БД из одной кодировки в другую

Неактивен

 

#3 03.07.2010 14:35:18

NARKOZ
Участник
Зарегистрирован: 18.08.2009
Сообщений: 14

Re: конвертирование БД из одной кодировки в другую

Код:

[iserv]$ recode utf8..latin1 test.sql
recode: test.sql failed: Invalid input in step `UTF-8..ISO-8859-1'

а наоборот (latin1 -> utf8) не дает нужного результата

Как вообще можно определить кодировку?

Отредактированно NARKOZ (03.07.2010 14:47:55)

Неактивен

 

#4 05.07.2010 13:21:23

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: конвертирование БД из одной кодировки в другую

Я знаю два способа определить кодировку — вручную и автоматически. Определение
кодировки вручную требует или некоторого опыта, или некоторого количества экспери-
ментов. Определение автоматически, например, есть у Темы Лебедева: http://www.artlebedev.ru/tools/decoder/

Неактивен

 

#5 08.07.2010 17:19:22

NARKOZ
Участник
Зарегистрирован: 18.08.2009
Сообщений: 14

Re: конвертирование БД из одной кодировки в другую

Как писал выше

Код:

recode utf8..latin1

не сработал. Сделал

Код:

recode -f utf8..latin1

сработало на ура, однако! часть данных потеряна. Например, предложения оборваны, текст оборван. Но сама кодировка в БД OK.

декодер говорит: CP1252 > UTF-8

Код:

[iserv]$ recode cp1252..utf8 test.sql
recode: test.sql failed: Ambiguous output in step `CR-LF..data'
[iserv]$ recode cp1252/..utf8 test.sql
recode: test.sql failed: Untranslatable input in step `CP1252..ISO-10646-UCS-2'

Здесь: http://pastie.org/1035934 - отрывок из дампа БД

Отредактированно NARKOZ (08.07.2010 17:55:02)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson