|
|
|
| Проблема следующая.
Делаю дамп базы данных с помощью mysqldump. На хостинге стоит phpmyadmin. после того как импортирую файл дампа с помощью phpmyadmin вместо нормальной кириллицы появляются кракозябры
Подскажите, как решить. | |
|
|
|
|
|
|
|
для: WebTech
(01.07.2007 в 10:51)
| | Может кто-нибудь помочь? :-( | |
|
|
|
|
|
|
|
для: WebTech
(01.07.2007 в 10:51)
| | В какой кодировке Вы получаете дамп?
Содержит ли он осмысленные данные?
Каким именно образом Вы импортируете дамп?
Указываете ли Вы в phpmyadmin при импорте именно ту кодировку, в которой создан дамп? | |
|
|
|
|
|
|
|
для: Trianon
(02.07.2007 в 00:40)
| | Файл с дампом в UTF8 и там тоже вместо кириллицы кракозябры
Импорт делаю через phpmyadmin в разделе ИМПОРТ и кодировку импортируемого файла я ставлю UTF8, формат файла - SQL
Если делать импорт с помощью программы mysql, то все нормально, это работает и на локальном компе и на хостингах, которые дают шелл. Но на этом хостинге нет шелла, только этот phpmyadmin :-( | |
|
|
|
|
|
|
|
для: WebTech
(02.07.2007 в 10:45)
| | >Файл с дампом в UTF8 и там тоже вместо кириллицы кракозябры
Вы уверены в этом?
Простите, какой смысл пытаться импортировать дамп, зная что он испорчен?
>Если делать импорт с помощью программы mysql, то все нормально
Выходит, там всё же живые данные, а не кракозябры?
Интересно поглядеть фрагмент дампа (в виде архива) | |
|
|
|
|
|
|
|
для: Trianon
(02.07.2007 в 11:22)
| | Вот пример дампа, посмотрите, пожалуйста. | |
|
|
|
|
|
|
|
для: WebTech
(02.07.2007 в 11:59)
| | Дамп искажен.
Почти наверняка некорректно выставлена кодировка на исходном сервере БД.
Впечатление такое что Вы пытаелись хранить кириллицу в таблице(или БД) с кодировкой latin1 | |
|
|
|
|
|
|
|
для: Trianon
(02.07.2007 в 12:18)
| | На исходном сервере UTF8
Вот что phpmyadmin показывает
character set client utf8
character set connection utf8
character set database utf8
character set results utf8
character set server utf8
character set system utf8
Может быть я дамп неправильно создаю? Я делаю так
mysqldump -u root -p --databases db_name > c:\db_name.sql
может быть какие-то дополнительные параметры для mysqldump нужно указывать? | |
|
|
|
|
|
|
|
для: WebTech
(02.07.2007 в 12:38)
| | >может быть какие-то дополнительные параметры для mysqldump нужно указывать?
попробуйте указать
--default-character-set=utf8
Вы точно не открывали файл после снятия дампа никаким текстовым редактором?
Он так и лег в архив нетронутым? | |
|
|
|
|
|
|
|
для: Trianon
(02.07.2007 в 13:42)
| | C этим параметром --default-character-set=utf8 все то же самое :-(
Файл я открывал, только для просмотра, ничего не сохранял.
Я сейчас добавил в скрипт на хостинге, после соединения с БД
mysql_query ('set character_set_client="utf8"');
mysql_query ('set character_set_results="utf8"');
mysql_query ('set collation_connection="utf8"');
|
Теперь вся кирилица из БД выглядит примерно так:
Г“Гèêà ëüГîå ïðåäëîæåГГЁГҐ! Ïðè ïîêóïêå ìóæñêîãî à ðîìà òà Rene Lezard Identite Homme Гў ðà ñôà ñîâêå 75 ìë, äåçîäîðà ГГІ Г±ГІГЁГЄ ГЁГ§ ýòîé æå ëèГГЁГЁ - Гў ïîäà ðîê!
Что-то похожее на UTF по-моему.
БД объемом примерно 1 МБ, переносить все вручную это нереально :-(
Что еще можно сделать? :-( | |
|
|
|
|
|
|
|
для: WebTech
(02.07.2007 в 16:56)
| |
<?php
mysql_unbuffered_query("SET `character_set_client` = 'utf8';");
mysql_unbuffered_query("SET `character_set_results` = 'utf8';");
mysql_unbuffered_query("SET `collation_connection` = 'utf8_general_ci';");
?>
|
Теперь вся кирилица из БД выглядит примерно так:
А с помощью чего Вы смотрите записи в базе данных? Через этот скрипт или phpMyAdmin? Если PMA, то нужно его настроить соответствующим образом. | |
|
|
|
|
|
|
|
для: Unkind
(02.07.2007 в 17:13)
| | С вашим вариантом все то же самое :-(
Записи смотрятся через скрипт.
А в PMA вся кирилица выглядит кракозябрами. Настроить я его (РМА) не могу, не дадут... | |
|
|
|
|
|
|
|
для: WebTech
(02.07.2007 в 17:25)
| | Для настройки PMA под себя не требуется что-то изменять на сервере.
При загрузке PMA можно изменить "Сопоставление соединения с MySQL", "Language" (Russian ru-utf-8).
Да и, возможно, там (в базе) уже испорченные данные. Вероятно, Вы заливали под неверной кодировкой. | |
|
|
|
|
|
|
|
для: WebTech
(02.07.2007 в 17:25)
| | >С вашим вариантом все то же самое :-(
>
>Записи смотрятся через скрипт.
Через какой? | |
|
|
|
|
|
|
|
для: Trianon
(02.07.2007 в 20:49)
| | Вот как было все с начала.
Есть сайт сделанный на локальном компе (php5.0.4, MySQL5.0.20). На локальном сервере MySQL установлена кодировка UTF8, сопоставление для баз данных и таблиц utf_general_ci. База данных заполнялась через админ часть сайта, т.е. через скрипты. Формат файлов скриптов ANSI. Кодировка для страниц сайта windows-1251. PMA вообще никак для заполнения БД не использовался.
Затем я сделал дамп БД с помощью mysqldump и попытался перенести его на хостинг.
Там стоит MySQL 4.1.21, кодировка UTF8, сопоставление utf_general_ci. Cтоит PMA, с помощью которого я попытался импортировать файл с дампом. Язык PMA - Russian (ru-utf8), файл дампа в формате UTF8.
Никаких дополнительных параметров после подключения к БД на хостинге, типа
SET `character_set_client` = 'utf8';
я не использовал.
После импорта вся кирилица, которая хранится в БД, после вывода на страницы сайта выглядит кракозябрами :-( | |
|
|
|
|
|
|
|
для: WebTech
(03.07.2007 в 08:12)
| | > Есть сайт сделанный на локальном компе (php5.0.4, MySQL5.0.20).
> На локальном сервере MySQL установлена кодировка UTF8, сопоставление для баз данных и таблиц utf_general_ci.
>База данных заполнялась через админ часть сайта, т.е. через скрипты.
>Формат файлов скриптов ANSI.
>Кодировка для страниц сайта windows-1251.
Вы не сказали главного. Скрипт, работающий с базой (заполнявший таблицы) никак не устанавливал кодировку соединения с БД. В результате она оставалась той, что по-умолчанию применяется для клиентов. А применяется та, которую используют основатели MySQL AB, шведы по национальности. То есть европейская latin1 с сопоставлением latin1_swedish_ci.
И сервер естественно полагал, что в него пихают данные latin1 (а вовсе не windows-1251), и считал своим долгом перед тем как уложить в таблицы в UTF-8 (тип БД и таблиц) эти данные в UTF-8 из latin1 преобразовать.
Естественно теперь, когда Вы пытаетесь обратиться к данным или снять дамп нормальным клиентом, Вы получаете фигню.
Можете попробовать снять дамп mysqldump'ером , указав ему кодировку latin1. Вероятно, Вы получите исходный вариант в windows-1251.
Возможно, нет. | |
|
|
|
|
|
|
|
для: Trianon
(03.07.2007 в 09:43)
| | Ура!!! Спасибо, Trianon!
mysqldump -u root --databases parfum --default-character-set=latin1 > c:\parfum.sql
Теперь сам дамп выглядит по человечески, т.е. кирилица выглядит кирилицей. При просмотре БД через РМА на хостинге тоже все по человечески. И на сайте все выводится нормально :-)
С меня бутылка!
Еще раз спасибо всем! | |
|
|
|