<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://php.apsique.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Php y otras yerbas - ¿Que onda con UTF-8? Sets de caracteres, la web y Ajax - Comentarios</title>
 <link>http://php.apsique.com/ajax/utf8</link>
 <description>Comentarios para &quot;¿Que onda con UTF-8? Sets de caracteres, la web y Ajax&quot;</description>
 <language>es</language>
<item>
 <title>Vale, tenia este problema en</title>
 <link>http://php.apsique.com/ajax/utf8#comment-82327</link>
 <description>&lt;p&gt;Vale, tenia este problema en mis sitio y pude solucionarlo con el procedimiento que refieres, pero a mi me sucedia que era el IE (Versión 6) el que enviaba el grupo de caracteres en Latin, con el IE7 no tuve ningún inconveniente.&lt;/p&gt;
</description>
 <pubDate>Tue, 24 Jun 2008 15:57:11 -0700</pubDate>
 <dc:creator>Jairo Adolfo</dc:creator>
 <guid isPermaLink="false">comment 82327 at http://php.apsique.com</guid>
</item>
<item>
 <title>Estás flipao. ¿Cómo va a</title>
 <link>http://php.apsique.com/ajax/utf8#comment-81577</link>
 <description>&lt;p&gt;Estás flipao. ¿Cómo va a haber caracteres que estén en iso-8859-1 pero no en utf-8?&lt;/p&gt;
</description>
 <pubDate>Tue, 27 May 2008 23:29:56 -0700</pubDate>
 <dc:creator>Uno</dc:creator>
 <guid isPermaLink="false">comment 81577 at http://php.apsique.com</guid>
</item>
<item>
 <title>Bueno yo he tenido ese</title>
 <link>http://php.apsique.com/ajax/utf8#comment-81397</link>
 <description>&lt;p&gt;Bueno yo he tenido ese problema con ajax usando protoype y he logrado solucionarlo usando una función para el texto que se va a enviar&lt;br /&gt;
reemplazando los caracteres por su version ascii&lt;/p&gt;
&lt;p&gt;function replaceHTML(cadena){&lt;br /&gt;
        cadena = cadena.replace(/Á/g, &amp;quot;&amp;#193;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/É/g, &amp;quot;&amp;#201;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/Í/g, &amp;quot;&amp;#205;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/Ó/g, &amp;quot;&amp;#211;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/Ú/g, &amp;quot;&amp;#218;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/á/g, &amp;quot;&amp;#225;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/é/g, &amp;quot;&amp;#233;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/í/g, &amp;quot;&amp;#237;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/ó/g, &amp;quot;&amp;#243;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/ú/g, &amp;quot;&amp;#250;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/Ñ/g, &amp;quot;&amp;#209;&amp;quot;);&lt;br /&gt;
        cadena = cadena.replace(/ñ/g, &amp;quot;&amp;#241;&amp;quot;);&lt;br /&gt;
        return cadena;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;a partir de esto he hecho una pequeña modificación a la libreria y funciona bien.&lt;br /&gt;
(me parece que por ser este un comentario html los caracter van a salir tal cual como se verían en html así que es cuestión de reemplazar estos por su versión.&lt;/p&gt;
</description>
 <pubDate>Wed, 21 May 2008 08:41:15 -0700</pubDate>
 <dc:creator>josed</dc:creator>
 <guid isPermaLink="false">comment 81397 at http://php.apsique.com</guid>
</item>
<item>
 <title>Bueno yo he tenido ese</title>
 <link>http://php.apsique.com/ajax/utf8#comment-81396</link>
 <description>&lt;p&gt;Bueno yo he tenido ese problema con ajax usando protoype y he logrado solucionarlo usando una función como &lt;/p&gt;
&lt;p&gt;function replaceHTML(cadena){&lt;br /&gt;
        cadena = cadena.replace(/Á/g, &quot;&amp;#193;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/É/g, &quot;&amp;#201;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/Í/g, &quot;&amp;#205;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/Ó/g, &quot;&amp;#211;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/Ú/g, &quot;&amp;#218;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/á/g, &quot;&amp;#225;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/é/g, &quot;&amp;#233;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/í/g, &quot;&amp;#237;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/ó/g, &quot;&amp;#243;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/ú/g, &quot;&amp;#250;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/Ñ/g, &quot;&amp;#209;&quot;);&lt;br /&gt;
        cadena = cadena.replace(/ñ/g, &quot;&amp;#241;&quot;);&lt;br /&gt;
        return cadena;&lt;br /&gt;
}&lt;/p&gt;
&lt;p&gt;a partir de esto he hecho una pequeña modificación a la libreria y funciona bien.&lt;/p&gt;
</description>
 <pubDate>Wed, 21 May 2008 08:33:37 -0700</pubDate>
 <dc:creator>josed</dc:creator>
 <guid isPermaLink="false">comment 81396 at http://php.apsique.com</guid>
</item>
<item>
 <title>Hola:
Muy interesante tu</title>
 <link>http://php.apsique.com/ajax/utf8#comment-80520</link>
 <description>&lt;p&gt;Hola:&lt;br /&gt;
Muy interesante tu articulo, yo estoy creando una aplicacion con mysql, tomcat 6 y jsp el problema es las ñ y los tildes ya configure la base de datos que acepte puros latin1, los jsp con el &amp;lt;%@ page content type=&quot;txt/html&quot;; charset=iso-8859-1&quot;; %&amp;gt;&lt;br /&gt;
Igual cree la base de datos con character set latin1 collate latin1_spanish_ci, y cada tabla de la misma manera pero sigue sin funcionar.&lt;br /&gt;
Pero sigue apareciendome caracteres rarossss ya no se que hacer no se como configurar el tomcat para q tome los caracteres con acentos, que hago ayudaaaaaaaaa por favor!!!!!!!!!!!!!!!!&lt;/p&gt;
</description>
 <pubDate>Tue, 22 Apr 2008 08:10:50 -0700</pubDate>
 <dc:creator>Argentina</dc:creator>
 <guid isPermaLink="false">comment 80520 at http://php.apsique.com</guid>
</item>
<item>
 <title>Excelente respuesta resolvio</title>
 <link>http://php.apsique.com/ajax/utf8#comment-76065</link>
 <description>&lt;p&gt;Excelente respuesta resolvio 100% mi problema y de una manera sencilla, gracias....&lt;/p&gt;
</description>
 <pubDate>Fri, 22 Feb 2008 07:09:30 -0800</pubDate>
 <dc:creator>Omar Salazar</dc:creator>
 <guid isPermaLink="false">comment 76065 at http://php.apsique.com</guid>
</item>
<item>
 <title>Bueno, parece que después</title>
 <link>http://php.apsique.com/ajax/utf8#comment-75359</link>
 <description>&lt;p&gt;Bueno, parece que después de mucho leer lo único que queda es el encode y decode a nivel de php, o hay alguien que sepa configurar en ajax.setRequestHeader O ajax.send algún parámetro para no tener que formatear campo a campo?.&lt;/p&gt;
&lt;p&gt;Un saludo.&lt;/p&gt;
&lt;p&gt;La Ñ es la Caña de España.&lt;/p&gt;
</description>
 <pubDate>Thu, 14 Feb 2008 01:39:28 -0800</pubDate>
 <dc:creator>Perejilillo desconocido</dc:creator>
 <guid isPermaLink="false">comment 75359 at http://php.apsique.com</guid>
</item>
<item>
 <title>Si la informática fuese</title>
 <link>http://php.apsique.com/ajax/utf8#comment-69807</link>
 <description>&lt;p&gt;Si la informática fuese como la religión, sería cosa de decir &quot;Lo dice el libro sagrado&quot;. Lamentablemente, la vida con los computadores no es tan sencilla.&lt;/p&gt;
&lt;p&gt;Por ejemplo, en tu caso:&lt;br /&gt;
- ¿Con cuál versión de Mysql trabajas?&lt;br /&gt;
- ¿Ocupas Windows o Linux?&lt;br /&gt;
- ¿Si ocupas windows, tienes bien configurado el tema de los charset?&lt;br /&gt;
- ¿Si ocupas Linux, que LC_ALL ocupas? y ¿qué programa de consola ocupas?&lt;br /&gt;
- ¿Cómo está configurado tu default-character-set de tu my.cnf? ¿Sabes donde está instalado, cierto?&lt;/p&gt;
&lt;p&gt;Si me das ese bla,bla, podríamos seguir con otro bla-bla :)&lt;/p&gt;
</description>
 <pubDate>Sun, 09 Sep 2007 20:42:54 -0700</pubDate>
 <dc:creator>clbustos</dc:creator>
 <guid isPermaLink="false">comment 69807 at http://php.apsique.com</guid>
</item>
<item>
 <title>creo que por las fechas de</title>
 <link>http://php.apsique.com/ajax/utf8#comment-69804</link>
 <description>&lt;p&gt;creo que por las fechas de los post esta discusion esta mas que muerta&lt;/p&gt;
</description>
 <pubDate>Sun, 09 Sep 2007 19:35:48 -0700</pubDate>
 <dc:creator>Perejilillo desconocido</dc:creator>
 <guid isPermaLink="false">comment 69804 at http://php.apsique.com</guid>
</item>
<item>
 <title>igual yo, de todo este rollo</title>
 <link>http://php.apsique.com/ajax/utf8#comment-69803</link>
 <description>&lt;p&gt;igual yo, de todo este rollo lo unico que quiero es averiguar como hacer que mysql reconozca la ñ en mis queries&lt;br /&gt;
en que archivo de mysql lo cambio y que comando puedo usar desde el command line de mysql. A esto es a lo que yo le llamo ir al grano y no bla bla bla.&lt;/p&gt;
</description>
 <pubDate>Sun, 09 Sep 2007 19:33:37 -0700</pubDate>
 <dc:creator>Perejilillo desconocido</dc:creator>
 <guid isPermaLink="false">comment 69803 at http://php.apsique.com</guid>
</item>
<item>
 <title>Una pista cuando se tenga pro</title>
 <link>http://php.apsique.com/ajax/utf8#comment-65702</link>
 <description>&lt;p&gt;Una pista cuando se tenga problemas con la eñe y MySQL+php+ajax...&lt;/p&gt;
&lt;p&gt;Siendo la url: pregunta_al_server.php?attribute=a%C3%B1o (año)&lt;br /&gt;
en php:&lt;/p&gt;
&lt;p&gt;...&lt;br /&gt;
$attribute =utf8_decode($_POST[&#039;attribute&#039;]);&lt;br /&gt;
...&lt;/p&gt;
</description>
 <pubDate>Thu, 29 Mar 2007 03:22:24 -0700</pubDate>
 <dc:creator>ulysess</dc:creator>
 <guid isPermaLink="false">comment 65702 at http://php.apsique.com</guid>
</item>
<item>
 <title>Estoy haciendo una aplicació</title>
 <link>http://php.apsique.com/ajax/utf8#comment-61222</link>
 <description>&lt;p&gt;Estoy haciendo una aplicación web con acceso a base de datos.&lt;br /&gt;
Pero quiero poder exportar toda la base de datos a ficheros XML.&lt;br /&gt;
El problema que tengo es que al salvarlo en XML los caracteres como la ? ñ o los acentos nos los puedo luego recuperar.&lt;/p&gt;
&lt;p&gt;Y al trabajar con la base de datos (pero ahora no con SQL) sino tirando de ficheros XML.&lt;br /&gt;
Los caracteres ya no son validos.&lt;br /&gt;
Quien me puede decir como salvar en XML sin tener problemas al recuperarlo luego.&lt;/p&gt;
&lt;p&gt;Salu2&lt;br /&gt;
Mel&lt;/p&gt;
&lt;p&gt;NOTA: Realmente mi problemas son los caracteres en chino, pero con la ñ me vale.&lt;/p&gt;
</description>
 <pubDate>Mon, 04 Dec 2006 06:28:55 -0800</pubDate>
 <dc:creator>mel</dc:creator>
 <guid isPermaLink="false">comment 61222 at http://php.apsique.com</guid>
</item>
<item>
 <title>hola please help me no puedo</title>
 <link>http://php.apsique.com/ajax/utf8#comment-47928</link>
 <description>&lt;p&gt;hola please help me no puedo chatear por q dicen q no tengo java o algo asi como bajo eso? y de donde?&lt;/p&gt;
</description>
 <pubDate>Sat, 26 Aug 2006 17:52:07 -0700</pubDate>
 <dc:creator>Perijilillo Desconocido</dc:creator>
 <guid isPermaLink="false">comment 47928 at http://php.apsique.com</guid>
</item>
<item>
 <title>hola please help me no puedo</title>
 <link>http://php.apsique.com/ajax/utf8#comment-47927</link>
 <description>&lt;p&gt;hola please help me no puedo chatear por q dicen q no tengo java o algo asi como bajo eso? y de donde?&lt;/p&gt;
</description>
 <pubDate>Sat, 26 Aug 2006 17:51:28 -0700</pubDate>
 <dc:creator>Perijilillo Desconocido</dc:creator>
 <guid isPermaLink="false">comment 47927 at http://php.apsique.com</guid>
</item>
<item>
 <title>Graves problemas</title>
 <link>http://php.apsique.com/ajax/utf8#comment-47766</link>
 <description>&lt;p&gt;Mira, no sé muy bien como se podrá arreglar, pero si te puedo explicar porque te pide el mensaje.&lt;br /&gt;
Al no poder reconocer tu archivo como word, lo califica como un archivo de texto. Como no puede saber que codificación de texto tiene, te pide que selecciones alguna de las disponibles. En resumen: el archivo se daño y Word no lo puede leer. Punto.&lt;/p&gt;
</description>
 <pubDate>Fri, 02 Jun 2006 11:53:29 -0700</pubDate>
 <dc:creator>clbustos</dc:creator>
 <guid isPermaLink="false">comment 47766 at http://php.apsique.com</guid>
</item>
<item>
 <title>¿Que onda con UTF-8? Sets de caracteres, la web y Ajax</title>
 <link>http://php.apsique.com/ajax/utf8</link>
 <description>&lt;h2&gt;Objetivo&lt;/h2&gt;
&lt;p&gt;Al finalizar este artículo, el lector, si logra traducir algo de mi verborrea, será capaz de&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entender de forma bastante vaga que son las codificaciones de caracteres&lt;/li&gt;
&lt;li&gt;Decir, ¡A,ha!, cuando lea ASCII, ISO-8859-1, Unicode y UTF-8&lt;/li&gt;
&lt;li&gt;Entender como maneja el objeto XMLHttpRequest
los set de caracteres en Firefox e IE&lt;/li&gt;
&lt;li&gt;Realizar aplicaciones que manejen de modo adecuado las codificaciones y decodificaciones de UTF-8 a ISO-8859-1 en PHP&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dicho esto, pueden leer el texto&lt;/p&gt;
&lt;!--break--&gt;
&lt;h2&gt;Breve trasfondo histórico de los set de caracteres&lt;/h2&gt;
&lt;h3&gt;ASCII, ISO-8859-1, UNICODE&lt;/h3&gt;
&lt;p&gt;Uno de los problemas de trabajar en nuestro idioma castellano (y en general en los romances) es el uso de los tildes y la ñ. Hasta inicios de los 90, todo el mundo se ahorraba problemas escribiendo en los formularios TODO EN MAYUSCULAS y dejando a los NUNEZ igual que los NUNEZ. Claro, estabamos bajo el dominio del &lt;a href=&#039;http://en.wikipedia.org/wiki/ASCII&#039;&gt;ASCII&lt;/a&gt;, que para los que no sepan, en un estándar que define la asociación entre un patrón digital y un carácter o glifo. En particular, los caracteres (letras y caracteres de control), ocupan 7 bit de información. Por tanto, existen 128 caractéres disponibles.&lt;/p&gt;
&lt;p&gt;Si bien ASCII cuenta con caracteres &quot;nacionales&quot;, como el tilde, el acento circunflejo y otros, se debían crear los caractéres imprimiendo el carácter original (la a), un retorno de carácter y el caracter nacional encima. Horrible.&lt;/p&gt;
&lt;p&gt;Para solucionar esto, llego la norma &lt;a href=&#039;http://en.wikipedia.org/wiki/ISO_8859&#039;&gt;ISO-8859&lt;/a&gt;, que define variados mapas de carácteres para distintos países. El que nosotros ocupamos es el infame &lt;a href=&#039;http://en.wikipedia.org/wiki/ISO_8859-1&#039;&gt;ISO-8859-1&lt;/a&gt;, o &lt;em&gt;Latin-1&lt;/em&gt;, una derivación de ISO 8859-1 (lean el artículo en la Wikipedia para que sepan exactamente la diferencia) que cuenta con caractéres usados comunmente en Albania, Catalán, Danés, Alemán, Inglés, Francés, Finlandés, Islandés, Irlandés, Italiano, Latín, Noruego, Portugués, Escocés, Suizo y, como no, Español.&lt;/p&gt;
&lt;p&gt;Si bien este formato es el más extendido en la actualidad, siempre ha estado la inquietud de sacarse de encima todo el lío de los distintos set de caracteres, unificando todo en un único sistema de codificación. Esto lo ha logrado el estándar &lt;a href=&#039;http://en.wikipedia.org/wiki/Unicode&#039;&gt;Unicode&lt;/a&gt;, una de cuyas implementaciones, el &lt;a href=&#039;http://en.wikipedia.org/wiki/UTF-8&#039;&gt;UTF-8&lt;/a&gt;, es la que predomina en GNU/Linux y en la red&lt;/p&gt;
&lt;h3&gt;UTF-8&lt;/h3&gt;
&lt;p&gt;UTF-8 (Formato de transformación Unicode de 8 bit) es una codificación de caracteres de largo variable. Usa grupo de bytes para representar el estándar Unicode para la mayoría de los lenguajes del mundo.&lt;/p&gt;
&lt;p&gt;¿Cómo funciona? Primero, para los caracteres dentro del rango ASCII, ocupa sólo un bit de información por carácter. Para el resto, se pueden ocupar desde 2 a 4 bytes. Una de las gracias de esta codificación es que siempre el bit más significativo para cada carácter no ASCII siempre es 1, lo cual impide que aparezca entremedio un byte 0x00, lo cual sería fatal para cualquier aplicación C.
Tocando lo práctico, veamos como maneja UTF-8 nuestros caractéres en español.
Si tenemos el siguiente texto grabado como UTF-8 (cortesía de SciTe):&lt;/p&gt;
&lt;pre&gt;
A
E
I
O
U
á
é
í
ó
ú
ñ&lt;/pre&gt;
&lt;p&gt;Podemos ver, a simple vista, que hay 11 letras y 10 retornos de carro(estoy en Linux, folks), lo cual nos da un total de 21 caracteres. Ahora bien, la cuenta de bytes me dice que hay ¡27! bytes utilizados. ¿Cómo es eso?&lt;/p&gt;
&lt;p&gt;Lo más sencillo, para tener un rápido vistazo, es ver el archivo con ISO-8859-1, cortesía de Jedit:&lt;/p&gt;
&lt;pre&gt;
A
E
I
O
U
?¡
?©
?­
?³
?º
?±
&lt;/pre&gt;
&lt;p&gt;Como se puede observar, los 5 primeros caractéres se representan por un sólo byte, que corresponde exactamente a la descripción ASCII, por lo cual se ven igual en ISO-8859-1. Ahora bien, los caracteres con tilde y la ñ son representados por 2 bytes, los cuales no tienen nada que ver con la codificación ISO-8859-1, por lo cual se ven muy raros. Veamos lo que nos dice un editor hexadecimal:&lt;/p&gt;
&lt;pre&gt;
41 0A
45 0A
49 0A
4F 0A
55 0A
C3 A1 0A
C3 A9 0A
C3 AD 0A
C3 B3 0A
C3 BA 0A
C3 B1
&lt;/pre&gt;
&lt;p&gt;C3, por si acaso, es 11000011 en binario, así como A1 es 10100001. Para caracteres de dos a cuatro bytes, el primer byte será 110xxxxx, 1110xxxx o 11110xxx si el caracter ocupa 2,3 o 4 bytes, respectivamente, mientras que el resto va como 10xxxxxx&lt;/p&gt;

&lt;h3&gt;En resumen....&lt;/h3&gt;
&lt;p&gt;Existen diferentes formas de codificar los caracteres. Las más comunes en el habla hispana son el ISO-8859-1 y el UTF-8, siendo esta la forma preferida por su compatibilidad a futuro. Si una se equivoca en la codificación, las cosas se ven muy feas&lt;/p&gt;
&lt;h2&gt;Los caracteres en la web&lt;/h2&gt;
&lt;h3&gt;En las páginas Web.&lt;/h3&gt;
&lt;p&gt;Para especificar el set de caracteres a utilizar tanto en HTML como en XHTML, se utiliza en el &lt;code&gt;&lt;HEAD&gt;&lt;/code&gt; de la página el código&lt;/p&gt;
&lt;div class=&#039;code&#039;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;ol class=&quot;hl-main&quot;&gt;&lt;li&gt;&amp;nbsp;&lt;span class=&quot;hl-brackets&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;hl-reserved&quot;&gt;meta&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hl-var&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-string&quot;&gt;Content-Type&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hl-var&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-string&quot;&gt;text/html; charset=utf-8&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hl-brackets&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Para UTF-8, o &lt;/p&gt;
&lt;div class=&#039;code&#039;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;ol class=&quot;hl-main&quot;&gt;&lt;li&gt;&amp;nbsp;&lt;span class=&quot;hl-brackets&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;hl-reserved&quot;&gt;meta&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hl-var&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-string&quot;&gt;Content-Type&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hl-var&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-string&quot;&gt;text/html; charset=iso-8859-1&lt;/span&gt;&lt;span class=&quot;hl-quotes&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;hl-code&quot;&gt; &lt;/span&gt;&lt;span class=&quot;hl-brackets&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Para ISO-8859-1 (Latin-1).&lt;/p&gt;
&lt;p&gt;Como es de suponer, todo el contenido de la página tiene que estar EFECTIVAMENTE escrito en ese set de caracteres. Para hacer una prueba rápida, si están en Firefox, vayan a View-&gt;Character Encoding-&gt;Western (ISO-8859-1) y verán lo linda que se ve esta página (que está en UTF-8) con el set de caracteres equivocado.&lt;/p&gt;
&lt;h3&gt;XMLHttpRequest y UTF-8&lt;/h3&gt;
&lt;p&gt;Ahora viene lo bueno, chiquillos. El objeto XMLHttpRequest, básico para el uso de Ajax, SIEMPRE ocupa UTF-8 para enviar y recibir datos. Punto.&lt;/p&gt;
&lt;p&gt;¿Por qué, entonces, muchas de las herramientas para Ajax funcionan extraño con los caracteres?. Revisando la página &lt;a href=&#039;http://xkr.us/articles/javascript/encode-compare/&#039;&gt;Comparing escape(), encodeURI(), and encodeURIComponent()&lt;/a&gt;, me di cuenta de:
&lt;ul&gt;
&lt;li&gt;Si enviamos un contenido por POST, este va a ser enviado siempre por UTF-8, pero si lo envíamos por GET, será codificado en ISO-8859-1 en Mozilla y en UNICODE en IE, usando la función escape&lt;/li&gt;
&lt;li&gt;La función &lt;code&gt;encodeURI&lt;/code&gt; y &lt;code&gt;encodeURIComponent&lt;/code&gt;, tanto en IE, como en Mozilla envía la representación UTF-8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eureka! El error entonces, en el script que tengo de prueba &lt;a href=&#039;http://php.apsique.com/ajax/XMLHttpRequest&#039;&gt;aquí&lt;/a&gt;, es que ocupo escape tanto para GET como para POST, lo que hace que se comporte distinto en IE y en Firefox. Lo ideal es usar &lt;code&gt;encodeURIComponent()&lt;/code&gt; cuando se envíe el dato por GET y por POST, para mantener siempre UTF-8 como codificación de caracteres y escapar el carácter &quot;&amp;&quot; y &quot;+&quot;, que con &lt;code&gt;encodeURI&lt;/code&gt; no son codificados&lt;/p&gt;
&lt;h3&gt;Conclusión&lt;/h3&gt;
&lt;p&gt;Al utilizar XMLHTTPRequest, se deben enviar los datos por POST y con GET con &lt;code&gt;encodeURIComponent&lt;/code&gt;. Si se desea ocupar ISO-8859-1, es un cacho, porque IE va a pasar los valores por GET por UTF-8, en tanto que Mozilla no. En general, mejor usar UTF-8 para todo
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Actualización Nº1&lt;/b&gt;: Me equivo al recomendar encodeURI. Se debe utilizar encodeURIComponent (gracias, Ignacio).&lt;/p&gt;</description>
 <comments>http://php.apsique.com/ajax/utf8#comments</comments>
 <category domain="http://php.apsique.com/lenguajes/javascript">JavaScript</category>
 <category domain="http://php.apsique.com/lenguajes/php">PHP</category>
 <category domain="http://php.apsique.com/categoria/temas_generales/programacion">Programación</category>
 <category domain="http://php.apsique.com/ajax">Ajax</category>
 <category domain="http://php.apsique.com/categoria/busquedas_comunes/caracteres">caracteres</category>
 <category domain="http://php.apsique.com/categoria/busquedas_comunes/utf8">utf8</category>
 <pubDate>Thu, 09 Jun 2005 07:30:06 -0700</pubDate>
 <dc:creator>clbustos</dc:creator>
 <guid isPermaLink="false">461 at http://php.apsique.com</guid>
</item>
</channel>
</rss>
