<?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>Un bout de DBA &#187; utf8</title>
	<atom:link href="http://www.noidea.ca/tag/utf8/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noidea.ca</link>
	<description>MySQL, En long et en large</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Comment convertir une DB de latin1 à UTF8</title>
		<link>http://www.noidea.ca/2009/06/15/comment-convertir-une-db-de-latin1-a-utf8/</link>
		<comments>http://www.noidea.ca/2009/06/15/comment-convertir-une-db-de-latin1-a-utf8/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 01:27:25 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=210</guid>
		<description><![CDATA[Un des défis d&#8217;être francophone consiste à bien gérer l&#8217;encoding. Je ne connais aucune personne n&#8217;ayant jamais eu de problème un jour où un autre. On m&#8217;a déjà approché pour trouver la manière la plus efficace de convertir une base de données de Latin1 à UTF8. Voici ce que j&#8217;ai trouvé. Ce n&#8217;est peut-être pas [...]]]></description>
			<content:encoded><![CDATA[<p>Un des défis d&#8217;être francophone consiste à bien gérer l&#8217;encoding. Je ne connais aucune personne n&#8217;ayant jamais eu de problème un jour où un autre. On m&#8217;a déjà approché pour trouver la manière la plus efficace de convertir une base de données de Latin1 à UTF8. Voici ce que j&#8217;ai trouvé. Ce n&#8217;est peut-être pas la manière la plus efficace, mais je n&#8217;ai pas eu problème après l&#8217;avoir testé. J&#8217;ai utilisé cette technique pour convertir une base de données de 115Go et tout c&#8217;est bien déroulé.</p>
<p>L&#8217;astuce consiste à transformer les chaines de caractères à un format binaire, pour ensuite les reconvertir en UTF8.</p>
<div class="geshi no sql">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">ALTER</span> <span class="kw1">DATABASE</span> myDbNameDEFAULT CHARACTER <span class="kw1">SET</span> utf8;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> Groups <span class="kw1">DEFAULT</span> CHARACTER <span class="kw1">SET</span> utf8;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> Groups <span class="kw1">MODIFY</span> Domain VARBINARY<span class="br0">&#40;</span><span class="nu0">64</span><span class="br0">&#41;</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">MODIFY</span> Type VARBINARY<span class="br0">&#40;</span><span class="nu0">64</span><span class="br0">&#41;</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">MODIFY</span> Description VARBINARY<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">MODIFY</span> Name VARBINARY<span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span> <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">ALTER</span> <span class="kw1">TABLE</span> Groups <span class="kw1">MODIFY</span> Domain VARCHAR<span class="br0">&#40;</span><span class="nu0">64</span><span class="br0">&#41;</span> CHARACTER <span class="kw1">SET</span> utf8 <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">MODIFY</span> Type VARCHAR<span class="br0">&#40;</span><span class="nu0">64</span><span class="br0">&#41;</span> CHARACTER <span class="kw1">SET</span> utf8 <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">MODIFY</span> Description VARCHAR<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span> CHARACTER <span class="kw1">SET</span> utf8 <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>,</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">MODIFY</span> Name VARCHAR<span class="br0">&#40;</span><span class="nu0">200</span><span class="br0">&#41;</span> CHARACTER <span class="kw1">SET</span> utf8 <span class="kw1">NULL</span> <span class="kw1">DEFAULT</span> <span class="kw1">NULL</span>;</div>
</li>
</ol>
</div>
<p>That&#8217;s it ! Super simple et efficace. Un coup qu&#8217;une string originalement Latin1 est convertie en format binaire, il n&#8217;y a plus de character set ni de collation qui tiennent. Elle devient un format binaire au même titre qu&#8217;une image JPG par exemple. Ensuite, on reprend ce format binaire et on réapplique un character set (et la collation par défaut dans mon exemple).</p>
<p>Il faut cependant ne pas négliger un aspect lors de cette conversion. Les caractères Latin1 utilise 1 byte par caractère alors qu&#8217;un caractère UTF8 utilisent 3 bytes par caractère. Si l&#8217;espace disque est une de vos contraintes, il ne faut pas prendre cette conversion à la légère!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/06/15/comment-convertir-une-db-de-latin1-a-utf8/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
