Тема: Вернемся к нашим баранам...

Всем привет. Я сразу извиняюсь, поскольку знаю, как это неприятно, когда мозги форматируют по одному и тому же поводу, т.к. у меня банальнейшая проблема, но из-за того, что я плохо разбираюсь в ПХП и MySQL, решить мне её не удается вот уже несколько дней.

На локалхосте у меня стоит связка xampp последней версии (как показывает ПХПМайАдмин: Версия MySQL-клиента: 5.0.51a, а phpMyAdmin - 2.11.4).
У меня есть sql-файл с Базой Данных форума IPB, который я хочу поставить на локалхосте и использовать при установке базу с импортнутым sql-файлом.
Я импорчу sql-файл, но когда после этого я захожу в таблицу posts (в PHPMyAdmin, форум я пока не ставил), там все русские символы отображаются в виде вопросов. Я знаю, что это очень часто встречающаяся проблема, просто решений столько, что я уже запутался, что правильно, а что нет.
Сразу говорю: я не знаю, как пользоваться командной строкой SQL (вкладка SQL в ПХПМайАдмин), потому что все команды, которые я пытался выполнить в ней, приводят к выводу ошибки (говорит, что синтаксис некорректный, хотя я просто копировал нужную команду).

Если посмотреть дамп, то там везде стоит "cp1251", так что, наверное, "SET NAMES cp1251" в начало дампа бессмысленно добавлять.

Заранее благодарю за любую помощь. smile

2

Re: Вернемся к нашим баранам...

Покажите вывод запроса:

SHOW VARIABLES LIKE 'char%';

Также скопируйте из дампа запрос на создание структуры любой таблицы содержащей кирилицу, начиная с CREATE TABLE и до первого INSERT. Посмотрите как в дампе отображается кирилица, если вместо нее крякозябы, то покажите их. Важно! Используйте для просмотра дампа специализированный текстовый редактор, например Notepad++.

3 (изменено: Lerokhallor, 2008-06-24 19:30:30)

Re: Вернемся к нашим баранам...

1. http://img104.imageshack.us/img104/4289/zaproslp3.jpg

2. Хм, смотреть дамп у меня на компе, а не в пхпмайадмин, так? Тогда, наверное вот это (таблица ibf_posts):

DROP TABLE IF EXISTS `ibf_posts`;
CREATE TABLE `ibf_posts` (
  `pid` int(10) NOT NULL auto_increment,
  `append_edit` tinyint(1) default '0',
  `edit_time` int(10) default NULL,
  `author_id` mediumint(8) NOT NULL default '0',
  `author_name` varchar(32) default NULL,
  `use_sig` tinyint(1) NOT NULL default '0',
  `use_emo` tinyint(1) NOT NULL default '0',
  `ip_address` varchar(16) NOT NULL default '',
  `post_date` int(10) default NULL,
  `icon_id` smallint(3) default NULL,
  `post` mediumtext,
  `queued` tinyint(1) NOT NULL default '0',
  `topic_id` int(10) NOT NULL default '0',
  `post_title` varchar(255) default NULL,
  `new_topic` tinyint(1) default '0',
  `edit_name` varchar(255) default NULL,
  `post_key` varchar(32) NOT NULL default '0',
  `post_parent` int(10) NOT NULL default '0',
  `post_htmlstate` smallint(1) NOT NULL default '0',
  `post_edit_reason` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`pid`),
  KEY `topic_id` (`topic_id`,`queued`,`pid`,`post_date`),
  KEY `author_id` (`author_id`,`topic_id`),
  KEY `post_date` (`post_date`),
  KEY `ip_address` (`ip_address`),
  KEY `post_key` (`post_key`),
  FULLTEXT KEY `post` (`post`)
) ENGINE=MyISAM AUTO_INCREMENT=1011 DEFAULT CHARSET=cp1251;
LOCK TABLES `ibf_posts` WRITE;
/*!40000 ALTER TABLE `ibf_posts` DISABLE KEYS */;
INSERT INTO `ibf_posts` (`pid`, `append_edit`, `edit_time`, `author_id`, `author_name`, `use_sig`, `use_emo`, `ip_address`, `post_date`, `icon_id`, `post`, `queued`, `topic_id`, `post_title`, `new_topic`, `edit_name`, `post_key`, `post_parent`, `post_htmlstate`, `post_edit_reason`) VALUES (1,0,1188918554,1,'IBResource Team',0,1,'127.0.0.1',1188914458,0,'Добро пожаловать на новый форум! (каммент: дальше там другие посты, их нет смысла показывать, все равно то же самое.)
/*!40000 ALTER TABLE `ibf_posts` ENABLE KEYS */;
UNLOCK TABLES;

4

Re: Вернемся к нашим баранам...

Дамп у вас в полном порядке. Откройте его в редакторе и посмотрите в какой он кодировке: utf8 или ANSI. В первом случае на странице импорта выберите кодировку файла utf8, во втором cp1251. Перед импортом создайте БД, в которую будет осуществлен импорт, выставив сравнение в cp1251_general_ci. После этого в phpMyAdmin должна появиться кирилица.

5

Re: Вернемся к нашим баранам...

Странно, все сделал, как вы сказали (в дампе стоит UTF)
У меня:
MySQL-кодировка:  UTF-8 Unicode (utf8)
Сопоставление соединения с MySQL: utf8_unicode_ci
Создаю пустую базу со сравнением cp1251_general_ci, импорчу с utf8 и все равно вижу потом это.

6

Re: Вернемся к нашим баранам...

Lerokhallor
Попробуйте на странице импорта выбрать кодировку файла cp1251.

7

Re: Вернемся к нашим баранам...

Безрезультатно. Может после импорта надо что-то прописать в командной строке?

8

Re: Вернемся к нашим баранам...

На главной phpMyAdmin установите "Сопоставление соединения с MySQL" в utf8_general_ci.

Если не поможет, попробуйте через окно SQL запроса выполнить запросы на создание таблицы и вставку данных.
CREATE TABLE и пару INSERT для пробы.

Если не поможет, опишите пошагово выполняемые операции.

9

Re: Вернемся к нашим баранам...

Hanut, запросы выполнять для пустой БД или для той, в которую импортнул?

10

Re: Вернемся к нашим баранам...

Lerokhallor сказал:

Hanut, запросы выполнять для пустой БД или для той, в которую импортнул?

Очистите БД и в ней выполните запросы.

11 (изменено: Lerokhallor, 2008-06-26 09:46:24)

Re: Вернемся к нашим баранам...

В общем, все решилось.

Я прописал у каждой Create_Table вместо

ENGINE=MyISAM AUTO_INCREMENT=33 DEFAULT CHARSET=cp1251;

вот это:

ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

Т.е. в юникод все перевел. Потом создал базу данных с дефолтной кодировкой utf8 и collation utf8_general_ci и импортнул файл.

Большое спасибо за помощь. smile

Дописка: забыл сказать, еще в my.cnf значение max_allowed_packet изменил на 16M (вместо 1М).