Проблема с кодировками при перетягивании базы

ЗАБАВА

Новичок
Проблема с кодировками при перетягивании базы

Установила на локале phpMyAdmin 2.6.1-pl3 , потому что провайдер тоже на него перешёл и не удавалось перекинуть туда базу - ошибку выдавало. Вот. Теперь база удачно перебрасывается, но этот phpMyAdmin 2.6.1-pl3 теперь работает в Unicode и у меня проблема с кодировкой. У меня база лежала в win-1251, а перегрузила я её чёрт знает в какой, во всяком случае на моём компе такой не стоит. Но в таблицах я заметила стоит столбец "Сравнение" и там находиться какая-то кодировка latin1_swedish_ci попыталась там изменить на cp1251_general_ci так побило буквы половина из них теперь знаки вопросов... Я в ужасе. Как решить эту проблему?
 

mozz

Новичок
Добавь в начало файла дампа SET NAMES cp1251 при создании базы укажи сравнение cp1251_general_ci должно получиться а также при поднятии из дампа укажи в какой кодировке твой файл (cp1251)
 

ЗАБАВА

Новичок
Даааа..... Попыхтеть пришлось.... Дамп одной таблицы я потеряла, но от неё сохранился файл - тхт. Пытаюсь теперь залить из него данные в базу - снова знаки вопросов..... Что теперь делать? Там нету никаких настроек вроде кодировок файлов - ничего там нет. Я сойду сума.
 

ЗАБАВА

Новичок
Спасибо всем за терпение

Я всё проделала, но, парадокс, не всё оказалось мне подходит - например SET NAMES cp1251 - говорит такого не знает... У меня Apache/2.0.55 (Win32)+ PHP/4.4.0 + MySQL 4.1.12a-nt-max на localhost.

Так вот:

1.) Я в файле дампа указала прямо в команде CREATE TABLE нужную мне кодировку.

CREATE TABLE `табл` (
`razdel_id` int(11) NOT NULL auto_increment,
........
`razdel_pid` int(11) NOT NULL default '0',
PRIMARY KEY (`razdel_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='траляля' AUTO_INCREMENT=255 ;

Сосмотрела со старых сохранившихся дампов. Кстати там везде стояла latin1 и проблем не вызывала... Значит ли это что раньше данные хранились в базе в этой кодировке?

2.) и кодировку этого самого файла при заливке выбрала - binary

Вопрос такой теперь мои данные храняться в БД в кодировке cp1251? phpMyAdmin 2.6.1-pl3 читаемо их отображает - в UTF-8. Стоит сравнение с cp1251_general_ci получаеться phpMyAdmin производит перекодировку так?.

1.) и 2.) трудов оказалось недостаточно - на сайте русские буковки по-прежнему оставались вопросиками.

3.) Тогда пришлось внести поправку в my.ini , как рекомендовано в статье http://phpclub.ru/faq/wakka.php?wakka=Mysql41Rus&v=enp , хотя мне это не совсем нравиться, как же тогда быть с интернациональными БД - не англорусскими, а скажем немецко-польско-русскими? Это что же получаеться - все должны лежать в русской кодировке? Или я чего-то недопонимаю?

И ещё, из статьи получается, что MySQL виноват во всём, но мой MySQL прежний, а вот РНР я подняла с 4.3 до 4.4 и phpMyAdmin до 2.6.1-pl3. А раньше этой проблемы почему-то не наблюдалось. Запуталась совсем...
 

Profic

just Profic (PHP5 BetaTeam)
например SET NAMES cp1251 - говорит такого не знает
Такого, это какого?
получаеться phpMyAdmin производит перекодировку так?
Не phpMyAdmin, а MySQL. Первый как раз использует SET NAMES utf8 после соединения со вторым.
мне это не совсем нравиться, как же тогда быть с интернациональными БД - не англорусскими, а скажем немецко-польско-русскими?
Очень просто, в них данные должны быть в utf8.
И ещё, из статьи получается, что MySQL виноват во всём, но мой MySQL прежний, а вот РНР я подняла с 4.3 до 4.4 и phpMyAdmin до 2.6.1-pl3. А раньше этой проблемы почему-то не наблюдалось.
Раньше все было в latin1. Т.е. реально данные были в cp1251, но база считала, что они в latin1. Также и phpMyAdmin версии < 2.6.0 не умел работать с кодировками, потому и отображал все как есть.
 

ЗАБАВА

Новичок
Автор оригинала: Profic
Такого, это какого?
Ну я вписала вначале дампа SET NAMES cp1251 выдало ошибку по-моему синтаксическую при заливке.

Не phpMyAdmin, а MySQL. Первый как раз использует SET NAMES utf8 после соединения со вторым.
Ага т.е. Это всегда делает MySQL по клиентской кодировке. Получается РНР вообще никакой не засылает и поэтому берется установка из my.ini . Так значит в знаках вопросиков на сайте его вина.

Очень просто, в них данные должны быть в utf8.
Как и русские наверное...
Но на сегодня в мире существуют уже готовые веб-эдиторы, с которыми привычно и удобно работать... Вообщем сплошной гиморой... То-то я гляжу что сой провайдер вроде бы перешёл на новый phpMyAdmin 2.6.1-pl3, но с кодировками оставил он это дело, всё выглядит тут как и прежде...
 

Royal Flash

-=MaestrO=-
Проблема здесь не совсем в PHPMyADMIN`e. На мой взгляд проблемма у Вас связана с php_mysql.dll, который вы заменили, скорее всего, вместе с апгрейдом PHP.

Решить ваш вопрос можно следующим образом:
Скачть программку - дампер MySQL баз, описание и ссылка на нее тут: http://phpclub.ru/faq/wakka.php?wakka=MySQLBackUpRestoreUtility&v=wsc
Установить ее (всего-лиш 1 файл и почти ничего не нужно настраивать) у провайдера в своей дирректории доступной из web, и с ее помощью скопировать базу. Далее записать эту программу у себя на локальном хвосте, внести в ее программный код следующие изменения:
1. найти все (около 4) строчки с mysql_select_db
2. добавить после каждого mysql_select_db новую строчку кода:
PHP:
mysql_query('SET NAMES cp1251');
И теперь с помощью немного модифицированного думпера залить свою базу. Должно быть все ок. Если будут вопросы по поводу применения моего метода - пишите, отвечу :)
 
Сверху