23

¿UTF-8 o ISO-8859-1? Problemas con el charset en PHP

December 3, 2009

Publicidad / Advertisement

¿Que usar? UTF-8 o ISO-8859-1. Personalmente yo uso solamente UTF-8 para codificar todo, aunque sean páginas en castellano. A la larga se evitan muchos problemas . Los problemas de charset surgen de dos cuestiones:

* Estoy abriendo una fuente utf-8 y mi salida se ve en iso-8859-1
* o bien el opuesto: iso-8859-1 la fuente, salida utf-8

Primer caso: Por lo general se dá cuando salen en vez de eñes y tildes, caracteres extraños del tipo úl , á , etc… la cadena de origen estaría codificado en UTF-8 y nuestra página se vé en iso-8859-1

Solución: La fuente está codificada en utf8 y es necesario pasarlo a Latin-1. Esto se hace con la función utf8_decode().

//En este caso hacemos la conversion de utf-8 a iso-8859-1
$cadena = utf8_decode($origen);

Segundo caso: En vez de caracteres especiales vemos unos signos de interrogación o cuadraditos con números. Esto significa que no puede traducir el caracter a alguno Unicode porque está “mal formado”.

Solución: Hay que convertir nuestra cadena a utf-8 mediante la función utf8_encode().

//hacemos la conversion de iso-8859-1 a UTF-8
$contenido = utf8_encode($origen);

Todos estos problemas se solucionarian usando el mismo charset para todo, recomendable usar UTF-8 en nuestras páginas, ya que si vamos a usar llamadas AJAX, todo esto se trata en UTF-8, y así nos evitaremos luego las complicaciones de los distintos juegos de caracteres.

Visita también estos artículos relacionados:

http://blog.creacciona.com/crear-archivos-en-utf-8-desde-php/

http://blog.creacciona.com/i%C2%BB%C2%BF/

Publicidad / Advertisement

 

Topics: Desarrollo web | 2 Comments »

2 Responses to “¿UTF-8 o ISO-8859-1? Problemas con el charset en PHP”

  1. belerioth Says:
    August 30th, 2010 at 11:07 pm

    Me resultó muy útil esta información, muchas gracias. Eso me alienta a seguirme “paseando” por este blog.

  2. Juan Ignacio Says:
    September 1st, 2013 at 1:40 am

    Muchas gracias por la información, ya llevaba un rato batallando.

Comments