Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] Кодировка. MySQL, phpmyadmin (http://forum.oszone.net/showthread.php?t=115970)

Artem-Samsung 02-09-2008 02:03 888963

Кодировка. MySQL, phpmyadmin
 
Выручайте ребята, экспортировали мне базу с одного места, нужно вставить в другое.
Размер БД свыше 200 мб, по этому как то в блокноте оно подвисает, не могу посмотреть.

Но экспортировал вроде успешно программой: Sypex Dumper Lite 1.0.8
Но вот посмотрев это все чудо в 200 таблиц я не очень обрадовался вот такими вот крякозябликам:
http://deykun.com/upload/kodirovka.jpg

Подскажите что и где посмотреть, исправить.

Кодировка сейчас у меня стоит: cp1251

dima1981 02-09-2008 03:38 888975

либо самого mysql либо в базах либо в таблице либо в файле и привести их к единой кодировке и там и там и там и там,
скорее всего посмотреть изначально в какой кодировке файл.

или я совсем не туда полез и тут задача для спецов, тогда сори ничего такого не думал )

vadimiron 02-09-2008 10:00 889057

Цитата:

Цитата dima1981
и там и там и там и там »

Вот это рецепт успеха - везде должна быть одна и таже кодировка....Советую UTF-8. Во-первых, сохраните сам файл в данной кодировке (если не открывается блокнотом - открывайте другим редактором, который поддерживают большие файлы), потом выставите на базе данных тоже туже самую кодировку. Проверьте, имеют ли создаваемые таблицы тоже ту же самую кодировку.

Artem-Samsung 02-09-2008 13:46 889232

К сожалению мне кажется, что не так то все и просто :) Это я ставлю на свой сервер, который на пример кодировки не особо и не настраивал. Но все работает. Только эта база данных с форумом глючит.

Нашел вот статейку.
http://www.opennet.ru/base/dev/mysql_cp1251.txt.html

Мне больше всего там понравился комментарий:

Цитата:

по-моему мнению статья описывает сугубо частный случай,
mysql+phpmyadmin+ipb... в общем случае задача решается:

echo "create database my_db" | mysql -uroot
mysql --default-character-set=cp1251 -uroot -Dmy_db < my_dump.sql
Может кто то мне обьяснить куда прописать те две строчечки? )

vadimiron 02-09-2008 14:12 889251

Цитата:

Цитата Artem-Samsung
две строчечки »

Это shell на Linux-е

dima1981 02-09-2008 15:32 889323

упс... )

dmitryst 02-09-2008 16:20 889354

Artem-Samsung, для mysql есть админ-утилита mySQL-administrator (бесплатная, лежит на сайте mysql-а). При помощи неё я успешно восстановил бэкап, очень похожий на этот. В опциях restore ставим кодировку - cp1251 и вперед :). Если не получится, кодировку меняем на utf8.
Цитата:

Цитата Artem-Samsung
Размер БД свыше 200 мб, по этому как то в блокноте оно подвисает, не могу посмотреть. »

notepad ++ :)

Artem-Samsung 02-09-2008 19:25 889482

Цитата:

Цитата dmitryst
mySQL-administrator »

http://dev.mysql.com/downloads/gui-tools/5.0.html
Что то на это похоже?

dima1981 02-09-2008 20:04 889503

Отвлеку на пару секунд, тема вот какая как то давненько скачивал
Цитата:

Цитата dmitryst
notepad ++ »

где только не помню где и установил тогда из ехе побыстрому, но теперь куда не иду скачивать перевожусь на заграничный сайт какой то там кое как разбераюсь как скачать файл, скачиваю и установить не могу совсем, столько папок и т.п., хотя для меня и блакнот обычный вполне хорош, но так из чистой любознательности хочу узнать как этот ++ устанавливать, пришлось на сайте читать инструкции и т.д. там не понял и продолжать не стал, может подскажите?

кстати, что это с форумом, где все, у вас есть банеры или, как это называется не знаю вообщем где ссылка на www.oszone.net , я у себя на сайте размещу, очень хочется?

или скажите, что даёте добро, я хоть текстом напечатаю или, как то там придумаю картинку, но вот слоган с вас, дело деликатное. :clapping:

Artem-Samsung 02-09-2008 20:11 889505

Такс. Пытаюсь выводить все что в базе данных без пхп май админ. Своим скриптом:
PHP код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>Untitled Document</title>
</head>

<body>
<?php
echo "Это обычный текст в пхп <br />";

$db mysql_connect ("localhost""root""" );
mysql_select_db ("test",$db);

mysql_query ("set character_set_client='cp1251'"); 
mysql_query ("set character_set_results='cp1251'"); 
mysql_query ("set collation_connection='cp1251_general_ci'");

$result mysql_query("
    SELECT `name` 
    FROM `ibf_members` 
    WHERE email = 'hyena_laughs@mail.ru'
"
);
$my_row mysql_fetch_array($result);


echo 
"Выборка из БД экспортирована:".$my_row['name']."<br />";


$result mysql_query("
    SELECT `a` 
    FROM `asd` 
"
);

$my_row mysql_fetch_array($result);
echo 
"Выборка из БД:".$my_row['a'];
?>
</body>
</html>

И что получается?:
а вот такое:
Цитата:

��� ������� ����� � ���
������� �� �� ��������������:Гиена Берта
������� �� ��:��-��
т.е. то что в БД видно прекрасно.
Если написать:
Цитата:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
То получается такое:
Цитата:

Это обычный текст в пхп
Выборка из БД экспортирована:Гиена Берта
SELECT `a` FROM `asd` Выборка из БД:ку-ку
т.е. все что просто текст или выборка из другей БД не экспортированой отображается правильно.
А то неправильно :( Как бы все совместить?

dima1981 02-09-2008 21:40 889570

квадратами мне кажется только utf-8 отображается, так тут может и прописать Artem-Samsung,
Цитата:

Цитата Artem-Samsung
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> »

<?php
$db = mysql_connect("localhost","root","...");
mysql_select_db("..." ,$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
$sql = mysql_query("SELECT * FROM rr" ,$db);
echo ("<table border ='1'>");
echo ("<tr><td>Адрес</td><td>Описание</td></tr>");
while ($pp = mysql_fetch_row($sql))
{
echo("<tr><td>$pp[0]</td><td>$pp[1]</td></tr>");
}
echo "</table>";
mysql_close($db);
?>

и попробуйте вот так, конечно всех данных не выведет, но хоть с кодировкой определенность появится не покажет, значит не utf-8 )

Artem-Samsung 02-09-2008 23:19 889662

http://hpclub.com.ua/test.php

PHP код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>

<body>
<?php
echo "Это обычный текст в пхп <br />";

$db mysql_connect ("localhost""root""" );
mysql_select_db ("test",$db);

mysql_query("SET NAMES 'utf8'"); 
mysql_query("SET CHARACTER SET 'utf8'"); 


$sql mysql_query("
    SELECT `name` 
    FROM `ibf_members` 
    WHERE email = 'hyena_laughs@mail.ru'
,$db);

$pp mysql_fetch_row($sql);
echo 
"Экспортированая БД: ".$pp[0];

$result mysql_query("
    SELECT `a` 
    FROM `asd` 
"
);

$my_row mysql_fetch_array($result);
echo 
"<br>Выборка из БД: ".$my_row['a'];

?>
</body>
</html>

Цитата:

Это обычный текст в пхп
Экспортированая БД: Гиена Р вЂ�ерта
Выборка из БД: РєСѓ-РєСѓ
Еще больше запутался (

Цитата:

Цитата dima1981
while ($pp = mysql_fetch_row($sql)) »

Там сильно много полей, что бы выводить.
Я вот только делаю так:
Экспортированая БД - та, с которой изначально проблеммы с кодировкой были
Выборка из БД: - уже сделаная в этой БД заметка, которая вроде как бы настроилась )

dmitryst 02-09-2008 23:51 889693

Artem-Samsung, по приведенной вами ссылке как раз то, что нужно, качайте.

Цитата:

Цитата Artem-Samsung
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<?php
echo "Это обычный текст в пхп <br />";
$db = mysql_connect ("localhost", "root", "" );
mysql_select_db ("test",$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'"); »

а если я заставлю БД выдавать результат в шведской кодировке, но браузеру скажу, что это зулусский? :) Вы уж определитесь с кодировкой для всей страницы

Artem-Samsung 03-09-2008 00:06 889702

Цитата:

Цитата dmitryst
а если я заставлю БД выдавать результат в шведской кодировке, но браузеру скажу, что это зулусский? Вы уж определитесь с кодировкой для всей страницы »

Да, ошибся. Кодировочку вверху махнул, получилось такое:
��� ������� ����� � ���
��������������� ��: Гиена Берта
������� �� ��: ку-ку

т.е. єкспортированая все равно не подружилась со страничкой.

Относительно моей ссылки, то немного не разобрался еще с php.ini (он похоже и так настроен),
а так все повторил, не помогло :(

Но вот по тому руководству как раз максимально приблизился к хоть какому то результату - новые записи в БД отображаются хорошо

dmitryst 03-09-2008 00:22 889714

Artem-Samsung, вы всё же воспользуйтесь утилитой и попробуйте конвертировать базу при восстановлении. Только заранее определите, какая кодировка будет использоваться везде - от базы до браузера (рекомендую юникод)

Artem-Samsung 03-09-2008 01:17 889741

dmitryst, спасиб.
Значит я все успешно установил, остается завтра подключить монитор днем и все настроить :)
А то управляю удаленно

dmitryst 03-09-2008 12:33 889993

Artem-Samsung, ага, ну поздравляю :). Впредь можно утилитой не пользоваться, а при создании базы указывать кодировки вручную, принудительно. Да, кстати, клиент командной строки тоже весьма неплох, можно просмотреть параметры создания каждой таблицы (SHOW CREATE `table_name`;)

Artem-Samsung 04-09-2008 01:47 890491

Капец )) Получается что то с чем то ))
Вообщем прикрепил я базу к форуму, на котором она стояла до этого и получилось такое:

http://hpclub.com.ua/forumhp/
Частично крякозябликами, частично правильно.
Когде переключить на utf-8, то то, что было крякозябликами - стало норм, а что норм - кубиками (((

Воощем попытался я импортировать программкой mysql administrator. Там выбирвается кодировка на которой экспортировать. Так вот, utf8 и cp-1251 пишет ошибку : ile: /srv/www/htdocs/backup/fantuac_harrypot.sql Error: Invalid character set selected for file.

Еще что меня настраживает. То что редактирую я файлик: my.cnf, а оно как то совсем не реагирует.
Добавлял в него и так:

[mysqld]

default-character-set=cp1251
character-set-server=cp1251
collation-server=cp1251_general_ci
init-connect="SET NAMES cp1251"
skip-character-set-client-handshake

И заменял cp1251 на utf8, ему все как то фиалетово.

dmitryst 04-09-2008 12:46 890750

Artem-Samsung, у вас сервер на чём? Если виндовый, то есть же утилита InstanceConfig - в ней и правьте. Если под никсами- ищите второй my.cnf или my.ini (обычно они бывают не там, где их ждешь :o )

dima1981 04-09-2008 14:17 890817

Красиво сделано )
вот может опять не то , но у меня такое было всё в одной кодировке и чепуха, получается, потом смотрю мне показанно, что сам файл сохранен в ansi, сохранил, в той в которой остальные и двинулся процесс )

может в браузере с кодировками попробывать переставлять, так то все путем, с форумом, отличный дизайн, мне понравился, единственное только кодировки вот что то, пару дней максимум на разбор, потом устаканится, тема то не вот тебе прям глобальная, поймется!

Artem-Samsung 04-09-2008 18:13 891035

Цитата:

Цитата dmitryst
Artem-Samsung, у вас сервер на чём? Если виндовый, то есть же утилита InstanceConfig - в ней и правьте. Если под никсами- ищите второй my.cnf или my.ini (обычно они бывают не там, где их ждешь ) »

Linux Suse 10 sp2. файлик редактирую в /etc/my.cnf

Artem-Samsung 04-09-2008 20:03 891112

http://hpclub.com.ua/forumhp
Капец, все что пока удалось реконструировать.... силенок нехватает :((

timon4ik 04-09-2008 20:36 891157

Цитата:

Форум знищено.
Бен Ладен ©
Это так должно быть?

Artem-Samsung 04-09-2008 21:27 891188

Цитата:

Цитата timon4ik
Это так должно быть? »

ыыыы :) Типа да, я пока временно это все прикрыл, скорее за всю, буду новый форум заново ставить, а там еще раз экспортну базу. Темку можно счиать решенной )
Спасибо всем

dmitryst 05-09-2008 12:16 891530

Artem-Samsung, я, когда маленький был, не умел пользоваться ALTER TABLE (и сейчас не умею), решил похожую проблему "в лоб". Сделал копию базы, потом из всех таблиц доставал данные в их кодировке и записывал в новую базу в другой кодировке. Потом старую базу заменил свеженькой, и всё :)

mar 05-09-2008 13:45 891599

dmitryst,
а для маленьких под *nix cуществует iconv :)


Время: 15:49.

Время: 15:49.
© OSzone.net 2001-