<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум PHP-MyAdmin.RU &mdash; Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
		<link>https://forum.php-myadmin.ru/viewtopic.php?id=1309</link>
		<atom:link href="https://forum.php-myadmin.ru/extern.php?action=feed&amp;tid=1309&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Экспорт/импорт нескольких баз: проблема с кодировкой».]]></description>
		<lastBuildDate>Fri, 10 Jul 2009 08:48:44 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8673#p8673</link>
			<description><![CDATA[<p>решился вопрос</p><br /><p>mysqldump -uroot -p --default-character-set=latin1 ИМЯ_БАЗЫ &gt; dump.sql<br />sed &#039;s/latin1/utf8/g&#039; dump.sql &gt; dump_utf.sql</p><p>целевой сервер:<br />В /etc/my.cnf в секции [mysqld] должно быть следующие строки<br />default-character-set=utf8<br />character-set-server=utf8</p><p>в секции [mysql] обязательно должна быть строка<br />default-character-set=utf8</p><p>mysql -uroot -p &lt; dump_utf.sql</p>]]></description>
			<author><![CDATA[null@example.com (darvin)]]></author>
			<pubDate>Fri, 10 Jul 2009 08:48:44 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8673#p8673</guid>
		</item>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8670#p8670</link>
			<description><![CDATA[<p><strong>darvin</strong><br />Готовых решений я не знаю.</p><div class="quotebox"><cite>darvin сказал:</cite><blockquote><p>насколько метод не дампов а копирования файлов базы отвратителен?</p></blockquote></div><p>В разных версиях MySQL бывают несовместимости в файлах таблиц, отсюда сложности, которые невозможно спрогнозировать. Если версия MySQL одна - то проблем не будет.</p><div class="quotebox"><cite>darvin сказал:</cite><blockquote><p>что в конфиге поменять у второго сервера, чтобы он базы первого читал без крякозябр?</p></blockquote></div><p>init-connect=&quot;SET NAMES latin1&quot;</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Thu, 09 Jul 2009 20:20:45 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8670#p8670</guid>
		</item>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8666#p8666</link>
			<description><![CDATA[<p>я согласен послностью сервер переносить, вместе с его глюками и багами<br />/var/lib/mysql перекопировал, базы перекопировались, но - крякозябры<br />что в конфиге поменять у второго сервера, чтобы он базы первого читал без крякозябр?<br />насколько метод не дампов а копирования файлов базы отвратителен?</p>]]></description>
			<author><![CDATA[null@example.com (darvin)]]></author>
			<pubDate>Thu, 09 Jul 2009 15:24:22 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8666#p8666</guid>
		</item>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8665#p8665</link>
			<description><![CDATA[<p>ааааа!!!!<br />там три сайта, все на движках<br />там по 100 таблиц<br />нету никаких решений готовых, может какойнибудь mysql migration tool?<br />или syrex dumper это умеет?</p>]]></description>
			<author><![CDATA[null@example.com (darvin)]]></author>
			<pubDate>Thu, 09 Jul 2009 15:10:26 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8665#p8665</guid>
		</item>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8664#p8664</link>
			<description><![CDATA[<p><strong>darvin</strong><br />На втором сервере все хорошо и ничего трогать не надо. Теперь необходимо перекодировать все данные в нормальный utf8.<br />(460, &#039;?????‹?‚&#039;, 1), - Это означает, что данные отправленные в utf8 были записаны в latin1, в соответствии с кодировкой соединения MySQL (latin1).</p><p>Я знаю только один способ перекодировать данные такого вида в нормальный utf8.</p><p>1) Сохраняем дамп данных только с таблицами имеющими крякозябы. Дамп в utf8, разумеется.<br />2) Вручную меняем в дампе во всех структурах на создание таблиц latin1 на utf8.<br />3) Импортируем дамп в тестовую БД, можно локально.<br />4) Создаем PHP скрипт вида:<br /></p><div class="codebox"><pre><code>&lt;?php

function Connect() {
    $link = @mysql_connect(&#039;localhost&#039;, &#039;user&#039;, &#039;pass&#039;) or exit(&#039;mysql_connect&#039;);
    mysql_query(&#039;SET NAMES latin1&#039;) or exit(&#039;set names latin1&#039;);
    mysql_select_db(&#039;db_name&#039;) or exit(&#039;select db&#039;);
    return $link;
}

$db = Connect();

/* Рабочие переменные */
$sql[&#039;table&#039;] = &#039;tbl_name&#039;;   // Имя таблицы.
$sql[&#039;key&#039;] = &#039;id&#039;;           // Уникальный идентификатор таблицы, ключ.
$sql[&#039;value&#039;] = &#039;field_name&#039;; // Имя поля в котором производится переконвертация.

$query = &#039;SELECT `&#039; . $sql[&#039;value&#039;] . &#039;`, `&#039; . $sql[&#039;key&#039;] . &#039;` FROM `&#039; . $sql[&#039;table&#039;] . &#039;` WHERE `&#039; . $sql[&#039;value&#039;] . &#039;` IS NOT NULL&#039;;
$result = mysql_query($query) or exit(&#039;select&#039;);
while ($row = mysql_fetch_assoc($result)) {
    $cont[$row[$sql[&#039;key&#039;]]] = $row[$sql[&#039;value&#039;]];
}

mysql_query(&#039;SET NAMES utf8&#039;);
echo &#039;count &#039; . count($cont) . &quot;&lt;br&gt;\n&quot;;
foreach ($cont as $key =&gt; $value) {
    mysql_query(&#039;UPDATE `&#039; . $sql[&#039;table&#039;] . &#039;` SET `&#039; . $sql[&#039;value&#039;] . &#039;` = &quot;&#039; . addslashes($value) . &#039;&quot; WHERE `&#039; . $sql[&#039;key&#039;] . &#039;` = &quot;&#039; . addslashes($key) . &#039;&quot;&#039;);
}

?&gt;</code></pre></div><p>5) Редактируем соответствующим образом данные для подключения к MySQL и три рабочие переменные и запускаем скрипт. И так следует проделать со всеми полями таблиц имеющих крякозябы.</p><p><strong>Важное замечание! Не запускайте этот скрипт под root!</strong><br />Создайте отдельного пользователя со всеми правами на используемую БД, но обязательно без Grant привилегий.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Thu, 09 Jul 2009 15:00:20 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8664#p8664</guid>
		</item>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8661#p8661</link>
			<description><![CDATA[<div class="quotebox"><cite>Hanut сказал:</cite><blockquote><p><strong>darvin</strong><br />Проблема в кодировке соединения MySQL. Проверить ее можно запросом:<br />SHOW GLOBAL VARIABLES LIKE &#039;char%&#039;;</p><p>character set connection - должен быть кодировкой используемой на сайте.</p><p>При доступе к конфигурационному файлу MySQL можно прописать в нем строку:<br />init-connect=&quot;SET NAMES utf8&quot;</p><p>Так же стоит поправить:<br />default-character-set=utf8</p><p>Это для установки кодировки соединения глобально. Есть возможность установить кодировку соединения с MySQL для каждого скрипта отдельно, для чего во всех скриптах следует сразу после функции mysql_connect добавить строку:<br />mysql_query(&#039;SET NAMES utf8&#039;);</p><p>Обратите внимание, что установка кодировки соединения будет корректно действовать для вновь записываемых в БД данных, но крякозябы в БД она не исправит, для этого следует их перекодировать. Способ перекодирования и шаги для этого необходимые надо обсуждать отдельно, так как это бывает не просто.</p></blockquote></div><p>на старом сервере, откуда хочу слить дамп:</p><p>Variable_name &nbsp; &nbsp; Value<br />character_set_client &nbsp; &nbsp; latin1<br />character_set_connection &nbsp; &nbsp; latin1<br />character_set_database &nbsp; &nbsp; latin1<br />character_set_filesystem &nbsp; &nbsp; binary<br />character_set_results &nbsp; &nbsp; latin1<br />character_set_server &nbsp; &nbsp; latin1<br />character_set_system &nbsp; &nbsp; utf8<br />character_sets_dir &nbsp; &nbsp; /usr/share/mysql/charsets/</p><br /><p>на новом, куда заливаю:<br />character_set_client&nbsp; &nbsp; &nbsp; utf8<br />character_set_connection &nbsp; &nbsp; utf8<br />character_set_database &nbsp; &nbsp; utf8<br />character_set_filesystem &nbsp; &nbsp; binary<br />character_set_results &nbsp; &nbsp; utf8<br />character_set_server &nbsp; &nbsp; utf8<br />character_set_system &nbsp; &nbsp; utf8<br />character_sets_dir &nbsp; &nbsp; /usr/share/mysql/charsets/</p><br /><p>где неправильно настроено?<br />где можно про перекодирование прочитать?<br />т. е. у меня сейчас не в утф все лежит в базе, хотя кодировка базы прописана утф?</p>]]></description>
			<author><![CDATA[null@example.com (darvin)]]></author>
			<pubDate>Thu, 09 Jul 2009 13:11:19 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8661#p8661</guid>
		</item>
		<item>
			<title><![CDATA[Re: Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8659#p8659</link>
			<description><![CDATA[<p><strong>darvin</strong><br />Проблема в кодировке соединения MySQL. Проверить ее можно запросом:<br />SHOW GLOBAL VARIABLES LIKE &#039;char%&#039;;</p><p>character set connection - должен быть кодировкой используемой на сайте.</p><p>При доступе к конфигурационному файлу MySQL можно прописать в нем строку:<br />init-connect=&quot;SET NAMES utf8&quot;</p><p>Так же стоит поправить:<br />default-character-set=utf8</p><p>Это для установки кодировки соединения глобально. Есть возможность установить кодировку соединения с MySQL для каждого скрипта отдельно, для чего во всех скриптах следует сразу после функции mysql_connect добавить строку:<br />mysql_query(&#039;SET NAMES utf8&#039;);</p><p>Обратите внимание, что установка кодировки соединения будет корректно действовать для вновь записываемых в БД данных, но крякозябы в БД она не исправит, для этого следует их перекодировать. Способ перекодирования и шаги для этого необходимые надо обсуждать отдельно, так как это бывает не просто.</p>]]></description>
			<author><![CDATA[null@example.com (Hanut)]]></author>
			<pubDate>Thu, 09 Jul 2009 12:22:56 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8659#p8659</guid>
		</item>
		<item>
			<title><![CDATA[Экспорт/импорт нескольких баз: проблема с кодировкой]]></title>
			<link>https://forum.php-myadmin.ru/viewtopic.php?pid=8657#p8657</link>
			<description><![CDATA[<p>Здравствуйте!<br />Есть два сервера, на одном стоит debian etch (4.0) на другом - lenny (5.0). <br />Пытаюсь с первого на второй перенести все базы данных<br />Некоторые - получается, некоторые - русские буквы крякозябрами (в .sql дампе, при чем и в дампе phpMyAdmin ом сделанные, и sypex dumperом)</p><p>вот такого плана:<br />(460, &#039;?????‹?‚&#039;, 1),<br />(460, &#039;???????°???‚???‡???‹????&#039;, 1),<br />(460, &#039;?­?‚???‚&#039;, 1),</p><p>sypex dumper по всякому настраивал, не получается</p><p>вот список баз данных с первого сервера: (php my admin)</p><p>&nbsp; &nbsp; normalbase1 &nbsp; &nbsp; latin1_swedish_ci &nbsp; &nbsp; <br />&nbsp; &nbsp; failbase1 &nbsp; &nbsp; utf8_unicode_ci &nbsp; &nbsp;&nbsp; <br />&nbsp; &nbsp; failbase2 &nbsp; &nbsp; utf8_general_ci &nbsp; &nbsp; </p><p>failbase1 и failbase2 - в дампе крякозябрами, а normalbase1 - в дампе русскими буквами. где собака зарыта?</p>]]></description>
			<author><![CDATA[null@example.com (darvin)]]></author>
			<pubDate>Thu, 09 Jul 2009 11:53:53 +0000</pubDate>
			<guid>https://forum.php-myadmin.ru/viewtopic.php?pid=8657#p8657</guid>
		</item>
	</channel>
</rss>
