SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 05.11.2012 06:57:10

zemelea
Участник
Зарегистрирован: 05.11.2012
Сообщений: 4

Помогите разобраться с кодировкой

Здравствуйте.
В общем есть .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 видны латинские символы, а остальные отображаются как иероглифы...
Я так понимаю проблема в кодировке? Где надо смотреть на кодировку? Какую выставлять?

Неактивен

 

#2 05.11.2012 11:20:09

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

Re: Помогите разобраться с кодировкой

В начале дампа напишите
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:

Неактивен

 

#3 05.11.2012 11:39:00

zemelea
Участник
Зарегистрирован: 05.11.2012
Сообщений: 4

Re: Помогите разобраться с кодировкой

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)


Прикрепленные файлы:
Attachment Icon screen.jpg, Размер: 186,546 байт, Скачано: 380

Неактивен

 

#4 05.11.2012 12:06:02

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

Re: Помогите разобраться с кодировкой

phpMyAdmin имеет какие-то свои настройки кодировок, поэтому его лучше не использовать для этих целей.

Восстанавливайте через консоль и все будет ok (кодировка самого файла .sql тоже должна быть 1251)

Неактивен

 

#5 05.11.2012 12:54:46

zemelea
Участник
Зарегистрирован: 05.11.2012
Сообщений: 4

Re: Помогите разобраться с кодировкой

Всё равно не получается, теперь и в поле `title` уже не иероглифы а просто знаки вопроса. А в консоли выдаёт ошибку, но вопросительные знаки тем не менее вставляет. Ошибка: incorrect string value (code 1366)...
Опять же кодировку самого .sql файла поменял на ANSI, в файле прописал SET NAMES cp1251;
Так же через консоль прописал \C cp1251 (кодировка удачно изменена)
указываю путь к файлу для выполнения запроса, данные вставляются но опять иероглифы

Неактивен

 

#6 05.11.2012 13:34:38

zemelea
Участник
Зарегистрирован: 05.11.2012
Сообщений: 4

Re: Помогите разобраться с кодировкой

yikes
Изменил кодировку файла .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'

Неактивен

 

#7 05.11.2012 13:49:53

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

Re: Помогите разобраться с кодировкой

zemelea написал:

Опять же кодировку самого .sql файла поменял на ANSI

Нет такой кодировки ANSI. Сделайте cp1251.

Неактивен

 

#8 05.11.2012 21:28:56

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Помогите разобраться с кодировкой

vasya написал:

zemelea написал:

Опять же кодировку самого .sql файла поменял на ANSI

Нет такой кодировки ANSI. Сделайте cp1251.

ASCII  наверно имеется ввиду

Неактивен

 

Board footer

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