<?xml version="1.0" encoding="windows-1251"?>
<rss version="0.92">
<channel>
<title>WikiJuanan - Utf8EnMysql</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql</link>
<description>History/revisions of WikiJuanan/Utf8EnMysql</description>
<language>en-us</language>
<item>
<title>2008-03-07 09:08:02</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql/show&amp;time=2008-03-07+09%3A08%3A02</link>
<description>&lt;a name="p1737-1">&lt;/a>&lt;p class="auto" id="p1737-1">&lt;span class="missingpage">My&amp;nbsp;SQL&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=MySQL/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a>&lt;/p>&lt;br />&lt;a name="p1737-2">&lt;/a>&lt;p class="auto" id="p1737-2">
Es&amp;nbsp;muy recomendable leer también esta página: &lt;a href="http://www.adviesenzo.nl/examples/php_mysql_charset_fix/" target="_blank" title="Vinculo externo
(en nueva ventana)" class="outerlink">&lt;img src="http://wiki.us.es/juanan/themes/default/icons/web.gif" alt="" border="0" />http://www.adviesenzo.nl/examples/php_mysql_charset_fix/&lt;/a>&lt;/p>&lt;a name="h1737-1">&lt;/a>&lt;h1>Lidiando con&amp;nbsp;&lt;span class="nobr">UTF-8&lt;/span> y&amp;nbsp;bases de&amp;nbsp;datos en&amp;nbsp;&lt;span class="missingpage">My&amp;nbsp;SQL&lt;/span>&lt;a href="http://wiki.us.es/juanan/wakka.php?wakka=MySQL/edit&amp;amp;add=1" title="Crear esta página">?&lt;/a>™&lt;/h1>&lt;a name="p1737-3">&lt;/a>&lt;p class="auto" id="p1737-3">
URL: &lt;a href="http://www.linuxparatodos.net/geeklog/staticpages/index.php?page=como-mysql-utf8" target="_blank" title="Vinculo externo
(en nueva ventana)" class="outerlink">&lt;img src="http://wiki.us.es/juanan/themes/default/icons/web.gif" alt="" border="0" />http://www.linuxparatodos.net/geeklog/staticpages/index.php?page=como-mysql-utf8&lt;/a>&lt;br />
Autor: Joel Barrios Dueñas&lt;br />
Correo electrónico: joelbarrios arroba linuxparatodos punto net&lt;br />
Sitio de&amp;nbsp;Red: &lt;a href="http://www.linuxparatodos.net/" target="_blank" title="Vinculo externo
(en nueva ventana)" class="outerlink">&lt;img src="http://wiki.us.es/juanan/themes/default/icons/web.gif" alt="" border="0" />http://www.linuxparatodos.net/&lt;/a>&lt;br />
Jabber ID: darkshram@jabber.org&lt;/p>&lt;hr noshade="noshade" size="1" />&lt;a name="p1737-4">&lt;/a>&lt;p class="auto" id="p1737-4">
&lt;strong>Creative Commons &lt;span class="nobr">Reconocimiento-NoComercial-CompartirIgual&lt;/span> 2.1&lt;/strong>&lt;/p>&lt;hr noshade="noshade" size="1" />&lt;a name="p1737-5">&lt;/a>&lt;p class="auto" id="p1737-5">
© 19&lt;span class="nobr">99&amp;ndash;200&lt;/span>5 Linux Para Todos. Usted es&amp;nbsp;libre de&amp;nbsp;copiar, distribuir y&amp;nbsp;comunicar públicamente la&amp;nbsp;obra y&amp;nbsp;hacer obras derivadas bajo las&amp;nbsp;condiciones siguientes: a) Debe reconocer y&amp;nbsp;citar al&amp;nbsp;autor original. b) No&amp;nbsp;puede utilizar esta obra para fines comerciales. c) Si&amp;nbsp;altera o&amp;nbsp;transforma esta obra, o&amp;nbsp;genera una&amp;nbsp;obra derivada, sólo puede distribuir la&amp;nbsp;obra generada bajo una&amp;nbsp;licencia idéntica a&amp;nbsp;ésta. Al&amp;nbsp;reutilizar o&amp;nbsp;distribuir la&amp;nbsp;obra, tiene que&amp;nbsp;dejar bien claro los&amp;nbsp;términos de&amp;nbsp;la licencia de&amp;nbsp;esta obra. Alguna de&amp;nbsp;estas condiciones puede no&amp;nbsp;aplicarse si&amp;nbsp;se obtiene el&amp;nbsp;permiso del&amp;nbsp;titular de&amp;nbsp;los derechos de&amp;nbsp;autor. Los&amp;nbsp;derechos derivados de&amp;nbsp;usos legítimos u&amp;nbsp;otras limitaciones no&amp;nbsp;se ven&amp;nbsp;afectados por&amp;nbsp;lo&amp;nbsp;anterior. Licencia completa en&amp;nbsp;castellano. La&amp;nbsp;información contenida en&amp;nbsp;este documento y&amp;nbsp;los derivados de&amp;nbsp;éste se&amp;nbsp;proporcionan tal&amp;nbsp;cual son&amp;nbsp;y&amp;nbsp;los autores no&amp;nbsp;asumirán responsabilidad alguna si&amp;nbsp;el usuario o&amp;nbsp;lector hace mal&amp;nbsp;uso de&amp;nbsp;éstos.&lt;/p>&lt;hr noshade="noshade" size="1" />&lt;a name="h1737-2">&lt;/a>&lt;h2>Introducción.&lt;/h2>&lt;a name="p1737-6">&lt;/a>&lt;p class="auto" id="p1737-6">
&lt;span class="nobr">UTF-8&lt;/span> es&amp;nbsp;un método de&amp;nbsp;codificación de&amp;nbsp;ASCII para Unicode (&lt;span class="nobr">ISO-10646&lt;/span>), el&amp;nbsp;Conjunto de&amp;nbsp;Caracteres Universal o&amp;nbsp;UCS. Éste codifica la&amp;nbsp;mayoría de&amp;nbsp;los sistemas de&amp;nbsp;escritura del&amp;nbsp;mundo en&amp;nbsp;un solo conjunto de&amp;nbsp;caracteres, permitiendo la&amp;nbsp;mezcla de&amp;nbsp;lenguajes y&amp;nbsp;guiones en&amp;nbsp;un mismo documento sin&amp;nbsp;la&amp;nbsp;necesidad de&amp;nbsp;ajustes para realizar los&amp;nbsp;cambios de&amp;nbsp;conjuntos de&amp;nbsp;caracteres.&lt;/p>&lt;br />&lt;a name="p1737-7">&lt;/a>&lt;p class="auto" id="p1737-7">
Cualquier sitio de&amp;nbsp;red que&amp;nbsp;haga uso&amp;nbsp;de&amp;nbsp;bases de&amp;nbsp;datos suele toparse con&amp;nbsp;problemas cuando se&amp;nbsp;trata de&amp;nbsp;lidiar con&amp;nbsp;el&amp;nbsp;tipo de&amp;nbsp;codificación (&lt;span class="nobr">UTF-8&lt;/span>, ISO-&lt;span class="nobr">8859&amp;ndash;1&lt;/span>, etc.), puesto que&amp;nbsp;en&amp;nbsp;algunos casos, por&amp;nbsp;citar un&amp;nbsp;ejemplo, los&amp;nbsp;caracteres latinos se&amp;nbsp;muestran incorrectamente por&amp;nbsp;el&amp;nbsp;cambio de&amp;nbsp;codificación.&lt;/p>&lt;br />&lt;a name="p1737-8">&lt;/a>&lt;p class="auto" id="p1737-8">
Actualmente se&amp;nbsp;está adoptando &lt;span class="nobr">UTF-8&lt;/span> como codificación para todo, sin&amp;nbsp;embargo aún&amp;nbsp;hay mucho material codificado en, por&amp;nbsp;ejemplo, ISO-&lt;span class="nobr">8859&amp;ndash;1&lt;/span>, e&amp;nbsp;incluso en&amp;nbsp;algunos casos codificado de&amp;nbsp;manera poco apropiada para los&amp;nbsp;latinos (&lt;span class="nobr">KOI8-R&lt;/span> alias cirílico).&lt;/p>&lt;br />&lt;a name="p1737-9">&lt;/a>&lt;p class="auto" id="p1737-9">
Uno&amp;nbsp;de&amp;nbsp;los casos que&amp;nbsp;podemos citar es&amp;nbsp;PHP Nuke. Si&amp;nbsp;se descarga el&amp;nbsp;código fuente de&amp;nbsp;cualquier versión de&amp;nbsp;PHP Nuke y&amp;nbsp;se examina el&amp;nbsp;tipo de&amp;nbsp;codificación, encontraremos que&amp;nbsp;casi todos los&amp;nbsp;fichero PHP&amp;nbsp;y&amp;nbsp;el molde de&amp;nbsp;la base de&amp;nbsp;datos inicial, nuke.sql, están codificados en&amp;nbsp;ISO-&lt;span class="nobr">8859&amp;ndash;1&lt;/span>, aunque Bluefish los&amp;nbsp;vea como &lt;span class="nobr">KOI8-R&lt;/span> (alias cirílico). Utilizar nuke.sql con&amp;nbsp;esta codificación tiene como consecuencia el&amp;nbsp;que todos los&amp;nbsp;datos que&amp;nbsp;se&amp;nbsp;almacenen en&amp;nbsp;la base de&amp;nbsp;datos también estarán codificados en&amp;nbsp;ISO-&lt;span class="nobr">8859&amp;ndash;1&lt;/span>. Esto puede no&amp;nbsp;ser un&amp;nbsp;problema serio para la&amp;nbsp;mayoría, puesto que&amp;nbsp;han utilizado esta codificación durante años. Pero cuando se&amp;nbsp;actualiza un&amp;nbsp;sistema operativo o&amp;nbsp;se cambia de&amp;nbsp;proveedor de&amp;nbsp;servicio de&amp;nbsp;hospedaje donde ya&amp;nbsp;se adoptó &lt;span class="nobr">UTF-8&lt;/span>, es&amp;nbsp;cuando surgen los&amp;nbsp;problemas.&lt;/p>&lt;a name="h1737-3">&lt;/a>&lt;h2>Procedimientos.&lt;/h2>&lt;a name="p1737-10">&lt;/a>&lt;p class="auto" id="p1737-10">
La&amp;nbsp;primera recomendación a&amp;nbsp;quien vaya a&amp;nbsp;implementar un&amp;nbsp;sitio con&amp;nbsp;PHP Nuke, al&amp;nbsp;igual que&amp;nbsp;cualquier otro tipo de&amp;nbsp;software similar, sería tomar nuke.sql y&amp;nbsp;convertirlo a&amp;nbsp;&lt;span class="nobr">UTF-8&lt;/span>, o&amp;nbsp;cualquier otra codificació según el&amp;nbsp;caso y&amp;nbsp;conveniencia. Para términos generales, puede utilizarse Bluefish para realizar este cambio de&amp;nbsp;codificación, aunque quienes prefieran una&amp;nbsp;consola podrán utilizar Vi&amp;nbsp;para realizar esta tarea:&lt;br />
$ vi&amp;nbsp;-c &amp;laquo;:wq! ++enc=utf8&amp;raquo; nuke.sql&lt;/p>&lt;br />&lt;a name="p1737-11">&lt;/a>&lt;p class="auto" id="p1737-11">
Recomendamos utilizar Vi&amp;nbsp;debido a&amp;nbsp;que éste no&amp;nbsp;solo codificará el&amp;nbsp;fichero, a&amp;nbsp;diferencia de&amp;nbsp;Bluefish y&amp;nbsp;iconv —usualmente utilizados para este fin— también convertirá los&amp;nbsp;conjuntos de&amp;nbsp;caracteres a&amp;nbsp;&lt;span class="nobr">UTF-8&lt;/span> sin&amp;nbsp;pérdida alguna.&lt;/p>&lt;br />&lt;a name="p1737-12">&lt;/a>&lt;p class="auto" id="p1737-12">
Tomar esta precaución asegurará que&amp;nbsp;los datos que&amp;nbsp;se&amp;nbsp;almacenen en&amp;nbsp;&lt;span class="nobr">UTF-8&lt;/span> en&amp;nbsp;la base de&amp;nbsp;datos. Sin&amp;nbsp;embargo… ¿Que se&amp;nbsp;puede hacer cuando se&amp;nbsp;tiene una&amp;nbsp;gran base de&amp;nbsp;datos en&amp;nbsp;producción? Puede seguirse el&amp;nbsp;siguiente procedimiento:&lt;/p>&lt;br />
&lt;ul>&lt;li> Obtener un&amp;nbsp;respaldo de&amp;nbsp;la base de&amp;nbsp;datos actual:
&lt;div class="indent">&lt;div class="indent">$ mysqldump -uusuario -pcontraseña -hservidor &lt;span class="nobr">base-de-datos&lt;/span> &amp;gt; respaldo.sql&lt;/div>&lt;/div>&lt;/li>&lt;/ul>
&lt;br />
&lt;div class="indent">&lt;div class="indent">&lt;div class="indent">&amp;#8594; Como precacución, archive este resplado en&amp;nbsp;un lugar seguro por&amp;nbsp;si&amp;nbsp;acaso sale algo mal.&lt;br />
&lt;/div>&lt;/div>&lt;/li>&lt;li> Utilizar vi&amp;nbsp;para codificar en&amp;nbsp;UTF y&amp;nbsp;caracteres, de&amp;nbsp;modo que&amp;nbsp;no&amp;nbsp;se pierda un&amp;nbsp;solo carcater:
&lt;div class="indent">&lt;div class="indent">$ vi&amp;nbsp;-c &amp;laquo;:saveas! ++enc=utf8 &lt;span class="nobr">respaldo-utf8&lt;/span>.sql&amp;raquo; respaldo.sql&lt;/div>&lt;/div>&lt;a name="p1737-13">&lt;/a>&lt;p class="auto" id="p1737-13">&lt;/div>
&lt;br />
&lt;div class="indent">&lt;/p>&lt;div class="indent">&lt;div class="indent">Lo anterior hace que&amp;nbsp;vi&amp;nbsp;abra respaldo.sql y&amp;nbsp;lo guarde como &lt;span class="nobr">respaldo-utf8&lt;/span>.sql realizando al&amp;nbsp;mismo tiempo la&amp;nbsp;codificación en&amp;nbsp;&lt;span class="nobr">UTF-8&lt;/span>.&lt;/div>&lt;/div>&lt;a name="p1737-14">&lt;/a>&lt;p class="auto" id="p1737-14">&lt;/div>
&lt;br />
&lt;div class="indent">&lt;/p>&lt;div class="indent">&lt;div class="indent">Si se&amp;nbsp;tienen varios ficheros *.sql, aún&amp;nbsp;si&amp;nbsp;es tentador a&amp;nbsp;fin de&amp;nbsp;ahorrar trabajo, no&amp;nbsp;es conveniente ejecutar vi&amp;nbsp;-c &amp;laquo;:wq! ++enc=utf8&amp;raquo; *.sql, ya&amp;nbsp;que solo se&amp;nbsp;codificará sin&amp;nbsp;convertir los&amp;nbsp;caracteres. Puede utilizarse un&amp;nbsp;guión ejecutable con&amp;nbsp;un&amp;nbsp;bucle para tal&amp;nbsp;finalidad:&lt;br />
#!/bin/sh&lt;br />
for&amp;nbsp;f&amp;nbsp;in *.sql;&lt;br />
do&lt;br />
vi&amp;nbsp;-c &amp;laquo;wq! ++enc=utf8&amp;raquo; $f&lt;br />
done&lt;br />
&lt;/div>&lt;/div>&lt;/li>&lt;li> Una&amp;nbsp;vez codificado todo es&amp;nbsp;conveniente crear una&amp;nbsp;una nueva base de&amp;nbsp;datos que&amp;nbsp;denominaremos «temporal» para realizar pruebas y&amp;nbsp;verificar que&amp;nbsp;el&amp;nbsp;método ha&amp;nbsp;dado resultado:
&lt;div class="indent">&lt;div class="indent">$ su&amp;nbsp;&amp;ndash; root&lt;br />
# mysqladmin -p create temporal&lt;br />
# mysql -p&lt;br />
mysql&amp;gt; GRANT all&amp;nbsp;ON&amp;nbsp;temporal.* TO&amp;nbsp;usuario@localhost IDENTIFIED BY&amp;nbsp;'contraseña';&lt;br />
mysql&amp;gt; exit;&lt;br />
# exit&lt;br />
&lt;/div>&lt;/div>&lt;br />
&lt;/div>&lt;ul>&lt;li> Utilizaremos respaldo.sql —ya convertido a&amp;nbsp;&lt;span class="nobr">UTF-8&lt;/span>— sobre la&amp;nbsp;base de&amp;nbsp;datos anteriormente creada:
&lt;div class="indent">&lt;div class="indent">$ mysql -uusuario -pcontraseña temporal &amp;lt; &lt;span class="nobr">respaldo-utf8&lt;/span>.sql&lt;br />
&lt;/div>&lt;br />
&lt;/div>&lt;/li>&lt;li> Una&amp;nbsp;vez hecho lo&amp;nbsp;anterior, realice pruebas y&amp;nbsp;verifique que&amp;nbsp;los caracteres latinos contenidos entre los&amp;nbsp;datos que&amp;nbsp;aparecen la&amp;nbsp;base de&amp;nbsp;datos realmente se&amp;nbsp;visualizan correctamente. Si&amp;nbsp;está conforme y&amp;nbsp;considera que&amp;nbsp;todo está correcto, a&amp;nbsp;su discreción, proceda a&amp;nbsp;reemplazar la&amp;nbsp;base de&amp;nbsp;datos, previo respaldo por&amp;nbsp;mera precaución.
&lt;div class="indent">&lt;div class="indent">$ mysqldump -uusuario -pcontraseña -hservidor &lt;span class="nobr">base-de-datos&lt;/span> &amp;gt; &lt;span class="nobr">nuevo-respaldo&lt;/span>.sql&lt;br />
$ mysql -uusuario -pcontraseña -hservidor &lt;span class="nobr">base-de-datos&lt;/span> &amp;lt; &lt;span class="nobr">respaldo-utf8&lt;/span>.sql &lt;/div>&lt;/div>&lt;/li>&lt;/ul></description>
</item>
<item>
<title>2008-03-07 09:07:56</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql/show&amp;time=2008-03-07+09%3A07%3A56</link>
<description>edited by JuananRuiz</description>
</item>
<item>
<title>2006-05-10 11:23:24</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql/show&amp;time=2006-05-10+11%3A23%3A24</link>
<description>edited by JuananRuiz</description>
</item>
<item>
<title>2006-05-10 11:23:07</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql/show&amp;time=2006-05-10+11%3A23%3A07</link>
<description>edited by JuananRuiz</description>
</item>
<item>
<title>2006-05-10 11:22:22</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql/show&amp;time=2006-05-10+11%3A22%3A22</link>
<description>edited by JuananRuiz</description>
</item>
<item>
<title>2006-05-10 11:20:05</title>
<link>http://wiki.us.es/juanan/wakka.php?wakka=Utf8EnMysql/show&amp;time=2006-05-10+11%3A20%3A05</link>
<description>edited by JuananRuiz</description>
</item>
</channel>
</rss>

 <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
 </script>
 <script type="text/javascript">
  _uacct = "UA-1947893-2";
  urchinTracker();
 </script>

