SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 22.02.2008 23:49:34

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Конвертор дампа базы из cp-1251 в utf-8

Есть дамп базы, который надо переконвертировать из cp-1251 в utf-8. У кого какие предложения?

Неактивен

 

#2 23.02.2008 00:00:22

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

Re: Конвертор дампа базы из cp-1251 в utf-8

Самое простое:
shell> recode utf8..сз-1251 дамп.sql
В винде есть аналоги типа Shtirlitz

Не забудьте предварительно сделать копию дампа!

И ещё, рекомендую сначала посмотреть статью http://sqlinfo.ru/articles/info/5.html

Неактивен

 

#3 23.02.2008 00:06:53

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Конвертор дампа базы из cp-1251 в utf-8

Может быть перекодировать не надо, просто SET NAMES правильно прописать в начале дампа?

Неактивен

 

#4 23.02.2008 00:16:54

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

К сожалению, доступа к linux-серверу не имею

Неактивен

 

#5 23.02.2008 00:18:35

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

rgbeast написал:

Может быть перекодировать не надо, просто SET NAMES правильно прописать в начале дампа?

Не получится, т.к. Collition (сравнение) останутся cp-1251 у таблиц

Неактивен

 

#6 23.02.2008 00:31:26

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

Может я вышлю дамп базы (200КБ), а Вы мне ее на linux- сервере смените кодировку? Буду премного благодарен.

Неактивен

 

#7 23.02.2008 09:53:42

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

Re: Конвертор дампа базы из cp-1251 в utf-8

Ispanec написал:

rgbeast написал:

Может быть перекодировать не надо, просто SET NAMES правильно прописать в начале дампа?

Не получится, т.к. Collition (сравнение) останутся cp-1251 у таблиц

Если в описании структур таблиц явно указана кодировка, то только перекодировать дамп будет недостаточно. Вам придется заменить упоминание cp-1251 (это можно сделать в любом текстовом редакторе).

Я всё же, как и rgbeast, полагаю, что Вам нет необходимости перекодировать дамп.
Для каких целей Вы хотите перекодировать дамп?
В какой кодировке реально находятся данные в дампе?

Неактивен

 

#8 23.02.2008 14:27:16

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

vasya написал:

Я всё же, как и rgbeast, полагаю, что Вам нет необходимости перекодировать дамп.
Для каких целей Вы хотите перекодировать дамп?
В какой кодировке реально находятся данные в дампе?

В структуре базы написано, что сравнение- cp-1251. Хочу залить дамп с локального сервера на хостинг, а там сравнение идет по utf-8

Неактивен

 

#9 23.02.2008 14:30:55

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Конвертор дампа базы из cp-1251 в utf-8

А сам дамп в какой кодировке? И что написано в начале дампа SET NAMES ... ?

Вам достаточно просто изменить структуру таблиц в дампе (изменить там кодировку и collation на UTF-8). SET NAMES, если он сообтветствует кодировке самого дампа, оставить как есть

Неактивен

 

#10 25.02.2008 13:10:22

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

rgbeast написал:

А сам дамп в какой кодировке? И что написано в начале дампа SET NAMES ... ?

Вам достаточно просто изменить структуру таблиц в дампе (изменить там кодировку и collation на UTF-8). SET NAMES, если он сообтветствует кодировке самого дампа, оставить как есть

Так и не нашел SET NAMES. Выкладываю базу (202KB). Помогите подправить.
http://www.sharemania.ru/download.gif

Неактивен

 

#11 25.02.2008 13:30:57

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

Re: Конвертор дампа базы из cp-1251 в utf-8

Дамп у Вас в кодировке utf8
В начале дампа добавляете строку SET NAMES utf8; (Эта команда сообщит серверу в какой кодировке поступают данные).
Далее в определении таблиц меняете cp1251 на utf8

И то и другое делается в любом текстовом редакторе. После чего заливаете дамп.

Неактивен

 

#12 25.02.2008 14:33:13

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

Если я меняю редактором сз1ё251 на utf8, то сравнение получается utf8_general_ci, а нужно utf8_unicode

Неактивен

 

#13 25.02.2008 14:42:53

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

Re: Конвертор дампа базы из cp-1251 в utf-8

Ну тогда меняйте CHARSET cp1251 на CHARSET utf8 COLLATE utf8_unicode

Неактивен

 

#14 26.02.2008 14:27:35

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

Re: Конвертор дампа базы из cp-1251 в utf-8

А чем Вас не устраивает utf8_general_ci?

Неактивен

 

#15 27.02.2008 17:40:22

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

vasya написал:

Ну тогда меняйте CHARSET cp1251 на CHARSET utf8 COLLATE utf8_unicode

Заменил CHARSET=cp1251 на CHARSET=utf8 COLLATE=utf8_unicode_ci
Ничего не помогает. Все равно вместо русских символов отображаются вопросы.

Неактивен

 

#16 27.02.2008 17:49:45

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

Re: Конвертор дампа базы из cp-1251 в utf-8

А в начале дампа добавили строку SET NAMES utf8; ?

Неактивен

 

#17 27.02.2008 19:47:41

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

vasya написал:

А в начале дампа добавили строку SET NAMES utf8; ?

конечно

Неактивен

 

#18 27.02.2008 20:45:00

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

Re: Конвертор дампа базы из cp-1251 в utf-8

Если коротко, то ситуация следующая - у Вас есть база, в которой хранятся данные в кодировке utf8. Но кроме этого есть:

а) скрипт (насколько я понимаю PHP), который обращается за этими данными. При этом MySQL преобразует данные из кодировки базы в кодировку Вашего соединения, поэтому после установки соединения рекомендуется в явном виде сообщить серверу кодировку, в которой Вы хотите получать данные. Например, SET NAMES utf8;

б) браузер, который для правильного отображения данных, должен знать в какой кодировке они находятся. Для этого используют обычно параметр HTTP-ответа Content-type. В PHP, например, его можно установить командой:
header ("Content-type: text/html; charset=utf8");


Подробнее см темы:
http://sqlinfo.ru/forum/viewtopic.php?id=83
http://sqlinfo.ru/forum/viewtopic.php?id=301
http://sqlinfo.ru/forum/viewtopic.php?id=302

Неактивен

 

#19 28.02.2008 15:17:15

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

Данная база предназначена для движка Joomla 1.0

Неактивен

 

#20 04.03.2008 15:39:26

Ispanec
Участник
Зарегистрирован: 22.02.2008
Сообщений: 11

Re: Конвертор дампа базы из cp-1251 в utf-8

У меня на локальном компьютере стоит DENWER. В phpMyAdmin я поменял кодировку на UTF-8 и сравнение на UTF8-unicode-ci. Делаю дамп базы, восстанавливаю на сервере (с теми же кодировками), а у меня в структуре напротив названий таблиц написано сранение cp1251-general-ci. Соответственно, вместо русских букв отображаются вопросики. Видимо, потому что база создавалась до того как я на локальном компьютере поменял кодировку на UTF. Что можно сделать?

Неактивен

 

#21 05.03.2008 13:39:49

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

Re: Конвертор дампа базы из cp-1251 в utf-8

Для начала, определитесь, в какой кодировке Вы хотите, чтобы были Ваши базы.
Если это UTF8, надо преобразовать каждую таблицу в эту кодировку

ALTER TABLE name CONVERT TO CHARSET utf8;

Наконец, не забывайте, что вопросительные знаки появляются не обязательно из-за
того, что данные записаны не правильно. Они могут появляться из-за того, что Вы
не выполнили SET NAMES на клиенте перед чтением.

Неактивен

 

Board footer

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