LINUX.ORG.RU

перевести из utf8 в cp1251


0

0

Народ, если несложно подскажите, как перевести БД из utf-8 в cp1251.

Не помогло:
mysqldump -uuser -p mydb > dump.sql
cat dump.sql | iconv -f UTF-8 -t cp1251 > dump1251.sql

Получились знаки вопроса вместо текста.

mysql версия 5.0.70
дистр gentoo


перекодировать дамп не нужно.

Советую обратить внимание на след. переменные:

character_set_client

character_set_connection

character_set_database

character_set_results

ef37 ★★
()
Ответ на: комментарий от Komintern

Это самое тупое решение.

Лучше сесть и потратить 5 минут на понимание, что такое перекодировка в базе.

Deleted
()
Ответ на: комментарий от Deleted

прозреваю ынтырпрайз и заказчегов с вордом но без пдфа

vostrik ★★★☆
()

В дампе обычно кодировка указана.
После перекодирования, а главное перед
заливкой её надо изменить.

Ну и заливать надо в кодировке по умолчанию,
или указать серверу, что сейчас данные польются
вот в такой, мол, кодировке.


-- заменить utf8 на cp1251
DROP TABLE IF EXISTS `categories`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `categories` (
  `rec_id` int(11) NOT NULL,
  `path` char(10) collate utf8_unicode_ci NOT NULL default '',
  `link` char(10) collate utf8_unicode_ci NOT NULL default '',
  `name` char(64) collate utf8_unicode_ci NOT NULL default '',
  PRIMARY KEY  (`rec_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
SET character_set_client = @saved_cs_client;

ip1981 ☆☆
()

Самый простой способ - добавить в самое начало в dump-а строчку вида:

set character_set_client = utf8

Этого должно быть достаточно.

И таки почитать про переменные сессии, которые я указал выше, чтобы не пришлось iconv-ом утюжить дамп :-) или еще хуже пересобирать mysql :-)

ef37 ★★
()

еще у mysqldump есть опция --default-character-set=

ef37 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.