-
В общем проблема в следующем. Экпортируем базу (через phpMyAdmin) в sql-файл. Потом импортируем на другом серве (даже на локалхосте). В итоге вместо русского языка получаем либо ??????? ??? ?? либо íàñòðîåê....
Мы предполагаем, что дело в разных кодировках баз (хотя когда просматриваешь дамп, sql-файл то бишь, то уже там эта проблема есть). Как решить проблему?
-
Во-первых уточните в каком виде хранится в самой базе. И обратите на поле Сравнение в описание полей и таблиц в phpMyAdmin ... по умолчанию часто там стоит greek_general_ci. Чтобы не было проблем при экспорте, надо чтобы там стояло либо cp2151_general_ci, либо koi8r_general_ci.
-
Сравнение у всех таблиц стоит такое, как Вы и говорите: cp1251_general_ci.
Посмотрел - у всех полей также оно.
В базе хранится просто текст в полях типа TEXT, LONGTEXT etc.
-
Цитата:
Originally posted by decoder@Jan 31 2006, 03:58
Сравнение у всех таблиц стоит такое, как Вы и говорите: cp1251_general_ci.
Посмотрел - у всех полей также оно.
В базе хранится просто текст в полях типа TEXT, LONGTEXT etc.
<div align='right'>[Only registered and activated users can see links. Click Here To Register...]
[/quote]
у самой базы есть тоже кодировка, точнее у интерфейса PhpMyAdmin
-
Попробуй сделать так вот:
mysql_query("SET CHARACTER SET cp1251");
И далее запрос с вставкой в таблицу данных... ну или это прям в пхпМайАдмине пропиши...
-
проблема в разных кодировках серверов.
что бы все работало нормально, нужно сделать несколько действий:
1. в самом начале импортируемого файла дампа добавить строку:
SET NAMES cp1251;
2. к структуре каждой таблицы добавить кодировку по умолчанию - cp1251, делается это так:
CREATE TABLE имя_таблицы (поля_таблицы) DEFAULT CHARSET=cp1251;
пример:
CREATE TABLE `dve_cat` (
`cat_id` int(5) NOT NULL auto_increment,
`cat_type` varchar(50) NOT NULL default '0',
PRIMARY KEY (`cat_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5;
весь этот геморой с кодировками появился в MySQL 4.1.*
-
Что касается проблем кодировками, то эта проблема и правда началась с версии 4. ... Сначала у нас стяла третья версия на Linux, потом сис.админ решил поставить FreeBSD и закатал туда четверку. Начались проблемы с переносом содержания. База была в крокозябрах.
-
Кстати сам столкнулся с такой проблемой. Нашел выход, кому интересно :
Когда коннектимся к базе, подаем запрос :
Код:
mysql_connect('localhot','user','pass');
mysql_select_db('base')
mysql_query("SET NAMES 1251");
Теперь по умолчанию база будет отдавать нам в кодировке 1251