MySQL преобразование кодировки - PullRequest
0 голосов
/ 21 апреля 2010

У меня есть база данных, в которой для всех текстовых полей и таблиц явно указано «utf8» в качестве набора символов по умолчанию, однако данные в этой базе данных хранятся как «cp1257». Я могу отображать символы только когда я использую SET NAMES 'cp1257' или \C cp1257. Попытка отобразить их без этих инструкций не удалась, потому что она пытается извлечь данные как 'utf8' (?). Что я могу сделать, чтобы получить все данные (возможно, резервную копию) базы данных в виде 'cp1257' и вернуть их в качестве действительного 'utf8'?

1 Ответ

1 голос
/ 21 апреля 2010

Вам нужно сначала преобразовать их в двоичное поле, а затем установить поле как cp1257. Таким образом MySQL узнает, в какой кодировке хранится поле:

ALTER TABLE CHANGE `field` `field` BLOB;
ALTER TABLE CHANGE `field` `field` TEXT CHARACTER SET 'cp1257';

Если вы хотите изменить способ хранения данных, теперь вы можете преобразовать поле в любой набор символов (MySQL выполнит преобразование данных на этом шаге):

ALTER TABLE CHANGE `field` `field` TEXT CHARACTER SET 'utf8';
...