<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>заметки на полях &#187; кодировка</title>
	<atom:link href="http://svdev.ru/tag/encoding/feed/" rel="self" type="application/rss+xml" />
	<link>http://svdev.ru</link>
	<description>Блокнот разработчика</description>
	<lastBuildDate>Thu, 08 Dec 2011 11:40:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>mysqldump и проблемы с кодировкой</title>
		<link>http://svdev.ru/blog/mysqldump-encoding-problem/</link>
		<comments>http://svdev.ru/blog/mysqldump-encoding-problem/#comments</comments>
		<pubDate>Mon, 11 May 2009 01:21:07 +0000</pubDate>
		<dc:creator>Дерябин Сергей</dc:creator>
				<category><![CDATA[неразобранное]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[кодировка]]></category>

		<guid isPermaLink="false">http://svdev.ru/?p=28</guid>
		<description><![CDATA[Делая дамп совершенно обычным способом 1mysqldump ads -u &#60;user&#62; -p &#62; dump.sql Заметил маленькую неприятность, что дамп получается со сбитыми кодировками. Добавление к параметра --default-character-set=utf8 облегчения не принесло и не возымело надо сказать вообще никакого эффекта. После небольшого периода гугления выяснилось, что дело не в утилите mysqldump, а в настройках кодировок на сервере. Посмотрев текущие [...]]]></description>
			<content:encoded><![CDATA[<p>Делая дамп совершенно обычным способом</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump ads <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">&lt;</span>user<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">&gt;</span> dump.sql</div></td></tr></tbody></table></div>
<p>Заметил маленькую неприятность, что дамп получается со сбитыми кодировками. Добавление к параметра <strong></p>
<code>--default-character-set=utf8</code>
<p></strong> облегчения не принесло и не возымело надо сказать вообще никакого эффекта. После небольшого периода гугления выяснилось, что дело не в утилите mysqldump, а в настройках кодировок на сервере. <span id="more-28"></span> Посмотрев текущие значения:</p>
<div class="codecolorer-container mysql vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="mysql codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysql<span style="color: #CC0099;">&gt;</span> <a href="http://search.mysql.com/search?site=refman-%35%31&amp;q=SHOW"><span style="color: #990099; font-weight: bold;">show</span></a> variables<span style="color: #000033;">;</span></div></td></tr></tbody></table></div>
<p>Понял что нужно лезть в конфиг сервера. В раздел глобальных параметров файла <strong></p>
<code>/etc/mysql/my.cnf</code>
<p></strong> необходимо добавить что то вроде:</p>
<div class="codecolorer-container apache vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="apache codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">[mysqld]<br />
<br />
default-character-set = utf8<br />
character_set_server = utf8<br />
character_set_client = utf8<br />
collation_server = utf8_general_ci<br />
skip-character-set-client-handshake</div></td></tr></tbody></table></div>
<p>Параметры которые могут понадобиться при этом:</p>
<ul>
<li><strong>
<code>character_set_client</code>
<p></strong> &#8211; кодировка, в которой данные будут поступать от клиента</li>
<li><strong>
<code>character_set_connection</code>
<p></strong> &#8211; кодировка по умолчанию для всего, что в рамках соединения не имеет кодировки</li>
<li><strong>
<code>character_set_database</code>
<p></strong> &#8211; кодировка по умолчанию для баз</li>
<li><strong>
<code>character_set_filesystem</code>
<p></strong> &#8211; кодировка для работы с файловой системой (LOAD DATA INFILE, SELECT &#8230; INTO OUTFILE, и т.д.)</li>
<li><strong>
<code>character_set_results</code>
<p></strong> &#8211; кодировка, в которой будет выбран результат</li>
<li><strong>
<code>character_set_server</code>
<p></strong> &#8211; кодировка, в которой работает сервер</li>
<li><strong>
<code>character_set_system</code>
<p></strong> &#8211; кодировка, в которой задаются идентификаторы MySQL, <strong>всегда UTF8</strong></li>
<li><strong>
<code>character_sets_dir</code>
<p></strong> &#8211; папка с кодировками</li>
<li><strong>
<code>skip-character-set-client-handshake</code>
<p></strong> &#8211; игнорировать клиентские настройки кодировки</li>
</ul>
<p>Но не смотря на правильную установку кодировок и сравнения для таблиц и строк данные писались в latin1. Это можно было определить по битому дампу. Решить можно довольно просто и в лоб &#8211; делаем дамп в latin1:</p>
<div class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mysqldump <span style="color: #660033;">--default-character-set</span>=latin1 <span style="color: #660033;">--skip-set-charset</span> <span style="color: #660033;">-u</span> <span style="color: #000000; font-weight: bold;">&lt;</span>user<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #660033;">-p</span> <span style="color: #000000; font-weight: bold;">&gt;</span> b.sql</div></td></tr></tbody></table></div>
<p>Таким образом мы получаем правильный дамп, т.к. кодировка полученного sql будет UTF, с помощью параметра  <strong></p>
<code>--default-character-set=latin1</code>
<p></strong> мы сдампили данные в той кодировке в которой они и была добавлены (когда сервер брал кодировки по умолчанию) и убрали упоминания об этом с помощью аттрибута <strong></p>
<code>--skip-set-charset</code>
<p></strong> Осталось развернуть базу и можно пользоваться уже с новой кодировкой.</p>
<h3>Интересные материалы по теме</h3>
<p style="text-align: left;"><a href="http://www.lissyara.su/?id=1655" target="_blank">MySQL + кодировки</a></p>
<p><a href="http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html" target="_blank">MySQL 5.1 Reference Manual &#8211; Server System Variables</a></p>
<p><a href="http://webdesigns.su/webdesigns/index.php?option=com_content&amp;view=article&amp;id=18%3A-backup-&amp;catid=14%3A2009-03-24-10-41-09&amp;Itemid=33&amp;lang=ru" target="_blank">Как правильно делать backup базы данных сайта</a></p>
]]></content:encoded>
			<wfw:commentRss>http://svdev.ru/blog/mysqldump-encoding-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

