Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
В общем есть .sql файл для бэкапа таблицы, часть которого выглядит так:
CREATE TABLE IF NOT EXISTS `d_bg` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE cp1251_bin NOT NULL,
`meta_d` varchar(255) COLLATE cp1251_bin NOT NULL,
`meta_k` varchar(255) COLLATE cp1251_bin NOT NULL,
`descript` text COLLATE cp1251_bin NOT NULL,
`text` text COLLATE cp1251_bin NOT NULL,
`pic` varchar(255) COLLATE cp1251_bin NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin AUTO_INCREMENT=17 ;
--
-- Дамп данных таблицы `d_bg`
--
INSERT INTO `d_bg` (`id`, `title`, `meta_d`, `meta_k`, `descript`, `text`, `pic`) VALUES
(1, 'Албена', '', '', '', 0x3c7020636c6173733d227469746c65, '');
После попытки импорта этой таблицы вижу следующее: в поле title вместо текста 'Албена' появляется 'd090d0bbd0b1d0b5d0bdd0b0' а в поле текст надпись [BLOB - 420Байт]... При попытке редактировать данную запись в таблице уже вместо BLOB видны латинские символы, а остальные отображаются как иероглифы...
Я так понимаю проблема в кодировке? Где надо смотреть на кодировку? Какую выставлять?
Неактивен
В начале дампа напишите
SET NAMES cp1251;
Если восстанавливаете через виндовую консоль, то не забудьте сменить ей кодировку на cp1251
C:\Program Files\MariaDB 5.3\bin>chcp 1251
Текущая кодовая страница: 1251
C:\Program Files\MariaDB 5.3\bin>mysql -u root -P 3308 -p test < c:\test.sql
Enter password:
Неактивен
SET NAMES cp1251; не помогло. Все действия делаю через phpMyAdmin в mySQL... Не может быть такого, что не получиться никак восстановить нормальные символы из файла? Дело в том что я файл открывал с помощью php designer и менял кодировку самого файла с Ansi на utf-8. Тем не менее поле `title` нормально преобразуется в русские символы, а поле `text` постоянно иероглифы отображает...
P.S. Сейчас в основных настройках:
Сопоставление соединения с MySQL : cp1251_bin
Сравнение (в настройках самой БД) : cp1251_bin
Все поля в таблице тоже: cp1251_bin
Ну и в файле .sql прописал SET NAMES cp1251;
Прикрепляю скрин из админки чтоб наглядно картину показать...
Отредактированно zemelea (05.11.2012 11:44:52)
Неактивен
phpMyAdmin имеет какие-то свои настройки кодировок, поэтому его лучше не использовать для этих целей.
Восстанавливайте через консоль и все будет ok (кодировка самого файла .sql тоже должна быть 1251)
Неактивен
Всё равно не получается, теперь и в поле `title` уже не иероглифы а просто знаки вопроса. А в консоли выдаёт ошибку, но вопросительные знаки тем не менее вставляет. Ошибка: incorrect string value (code 1366)...
Опять же кодировку самого .sql файла поменял на ANSI, в файле прописал SET NAMES cp1251;
Так же через консоль прописал \C cp1251 (кодировка удачно изменена)
указываю путь к файлу для выполнения запроса, данные вставляются но опять иероглифы
Неактивен
Изменил кодировку файла .sql на utf8, прописал SET NAMES UTF8; , и для одной таблицы изменил в файле .sql
CREATE TABLE IF NOT EXISTS `d_ae` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE cp1251_bin NOT NULL, ......
везде где было cp1251_bin поменял на utf8_bin и в этой таблице наконецто прочитал поле 'text'
Неактивен
zemelea написал:
Опять же кодировку самого .sql файла поменял на ANSI
Нет такой кодировки ANSI. Сделайте cp1251.
Неактивен
vasya написал:
zemelea написал:
Опять же кодировку самого .sql файла поменял на ANSI
Нет такой кодировки ANSI. Сделайте cp1251.
ASCII наверно имеется ввиду
Неактивен