2mdc
C/ Matias Turrión, 24, 1º
Madrid 28043
Tel: 91 759 00 24
Fax: 91 759 15 18

Blog: Desarrollo web

Decodificando desde ASCII, ISO 8859-1 o UTF-8

Publicado el: 7/07/2009 en: Desarrollo web | 1 comentario

Envía esta entrada a menéame Envía esta entrada a del.ici.ous Envía esta entrada a facebook Envía esta entrada a Twitter

A todo programador PHP le llega el momento de lidiar con la temible codificación de caracteres al crear una web. Cosas llamadas ISO 8859, UTF, Latin1, JIS. etc… pueden volverte loco si no se ha tenido en cuenta a la hora de crear las BBDD, incluir script de terceros, wordpress, google maps, etc…

Como ayuda hemos tratado de crear una pequeña función para ayudarte a despreocuparte de todo. Ella sólo detecta la codificación del texto pasado y obra en consecuencia, lo cual puede ser muy util si estamos trabajando con caracteres de los que desconocemos su codificación, o peor aún, ¡Tienen codificaciones mezcladas!

< ?php

# Probamos 3 cadenas de texto con diferentes codificaciones
# la primera con caracteres ASCII (hasta el 128)
# la segunda ISO 8859-1 latin1 (con una eñe)
# y la tercera con el caracter copuright en formato utf8
#

//Array donde almacenaremos el resultado de la funcion:
$salida	=	array();
$salida[]	=	decode_for_web("2mdc");
$salida[]	=	decode_for_web("diseño");
$salida[]	=	decode_for_web("WEB ©");

//Pintamos la tabla:
echo '
';
foreach($salida AS $valor){

	echo	'


';
	echo	'


';

}
echo '';

# Funcion decodificadora desde ASCII, Latin1 o UTF-8
# Es muy importante conservar el orden del 2do parametro
# en mb_detect_encoding para su correcto funcionamiento.
#

function decode_for_web($texto){

	$tipo = mb_detect_encoding($texto, "ASCII,UTF-8,ISO-8859-1");

	switch($tipo){

		case "ASCII":

		break;
		case "UTF-8":
			$texto	=	utf8_decode($texto);
		break;
		case "ISO-8859-1":

		break;
		default:

		break;

	}

	//array con el texto decodificado y su tipo.
	return array($texto,$tipo);

}

?>

Como se puede ver utilizamos la nativa mb_detect_encoding() la cual es algo rara a la hora de configurar.
Se puede añadir código en las diferentes casos del switch o al final para por ejemplo convertir a entidades HTML antes retornar.

El resultado sería éste:
'.$valor[0].''.$valor[1].'
2mdc ASCII
diseño ISO-8859-1
WEB © UTF-8
Valore de 1 a 5 este artículo
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (No valorado aun)

Deja tu comentario1 Comentario

  • Julio - codigo ascii
    20/08/2010

    Buen codigo. Util para probar algun que otro caracter y sobre todo para familiarizarse con el ASCII.

Deja tu comentario



Tags HTML Permitidos:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

2mdc.com Aplicaciones web C/ Matias Turrión, 24, 1º, Madrid 28043 Tel: 91 759 00 24 Fax: 91 759 15 18 Aplicaciones web