Кодировка mysql базы. Можно ли её сменить?

B
На сайте с 29.01.2007
Offline
141
18369

В админке хостера создаю базу.

Захожу в phpmyadmin, смотрю список баз, та, что я создал, в кодировке latin1_swedish_ci, мне же нужно cp1251_general_ci

У меня из-за шведской кодировки база не хочет восстанавливаться.

Хостер пока молчит.

Вопрос: есть ли возможность запросом, али как в phpmyadmin сменить кодировку на правильную?:smoke:

DENIEL
На сайте с 15.11.2005
Offline
73
#1

Поробуйте так:

ALTER TABLE `tablename` CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;

ALTER TABLE `tablename` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;

Либо пересоздайте таблицу:

CREATE TABLE `tablename` (

`id` int(11) unsigned NOT NULL auto_increment,

PRIMARY KEY (`id`),

UNIQUE KEY `id` (`id`)

) DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_ci;

Прежде чем что-то сказать думайте, если не хотите думать - лучше не говорите.
Larden
На сайте с 09.03.2007
Offline
32
#2

Если я правильно понял проблему, то необходимо в скрипте, сразу после подключения к базе данных прописать:


mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
П
На сайте с 13.03.2007
Offline
9
#3
DENIEL:
Поробуйте так:
ALTER TABLE `tablename` CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
ALTER TABLE `tablename` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;

А чтобы сама база была в ср1251:

ALTER DATABASE `имя базы` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Larden:
Если я правильно понял проблему, то необходимо в скрипте, сразу после подключения к базе данных прописать:

mysql_query("SET NAMES 'cp1251'");

B
На сайте с 29.01.2007
Offline
141
#4
DENIEL:
Поробуйте так:
ALTER TABLE `tablename` CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
ALTER TABLE `tablename` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;

Самое интересное, не помогло, но саппорт сказал, что в Операциях можно сменить, когда так и сделал, высветился именно такой код :)

Larden,

Larden:
Если я правильно понял проблему, то необходимо в скрипте, сразу после подключения к базе данных прописать

Да, потом пришлось и так проделать. Причём, в 2х местах )

Спасибо всем откликнувшимся.

B
На сайте с 29.01.2007
Offline
141
#5

Хм, странно это, но способ, предложенный тов. Larden пригодился уже 2й раз )

IQPartner
На сайте с 20.09.2007
Offline
138
#6

latin_swidish - кодировка мускула по умолчанию.

(Вы, наверное переезжали с сервера с MySQL 4.0 на сервер с 4,1?)

Если менять кодировку запросом, то содержимое полей БД (которое и так на русском) будет перекодированно и, даже, если это будет нормально отображаться на сайте, то в PHPMyAdmin вы вместо русского получите крокозяблы.

Чтобы избежать проблемы (чтобы и в MySQL видеть русский и на сайте) нужно вначале сменить тип полей на бинарный, затем сменить кодировку на ту которую хотите, а после этого вернуть тип полей назад. Т.о. содержимое БД не подвергнется обработке, а кодировка будет сменена.

Если хотите, могу дать (проверенный) скрипт, который это легко делает. Стучитесь в Личку.

С 2009-го меняю PayPal->WMZ за 8% (вывод с партнерок -7%) (/ru/forum/959037), Оплачу за вас PayPal за 0-3%. Слать Рaypal ТОЛЬКО на admin[/гаф-гаф\]israword.co.il - иначе это не я;

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий