Convertir caracteres UTF-8 con PHP

Valoración del artículo:
Funciones PHP para convertir caracteres UTF-8 y que se vean bien los acentos y otras letras del alfabeto latino. Función decode UTF8 PHP.
Publicado: 24/9/08
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
En ocasiones los textos de la página web pueden contener caracteres raros en lugar de acentos u otras letras propias del idioma español, como la ñ o las letras con diéresis y de otros idiomas latinos. Esto suele ocurrir en casos en que la base de datos trabaje en un juego de caracteres distinto que la página, o que los datos estén mal cargados en la misma. Generalmente estos errores surgen por un tratamiento inadecuado del juego de caracteres UTF-8, que no están procesados como UTF-8, sino como si fueran ISO-8859-1. Con PHP podemos decodificar esos caracteres para que a la hora de mostrar los textos en la página aparezcan correctamente. Para ello existen una funciones que vamos a comentar en este artículo de DesarrolloWeb.com.

Cuando vemos incorrectamente un texto nos pueden aparecer textos como estos:

Solución útil y apañada a UTF-8

Este texto tiene caracteres codificados en UTF8, que debemos decodificar para que aparezcan correctamente los acentos y demás símbolos del alfabeto latino.

Decodificar una cadena UTF-8 con PHP - decode utf8 php

Existe una función de PHP que realiza el trabajo de conversión de los caracteres UTF8 a sus correspondientes códigos reales.

La función se llama utf8_decode() y lo que hace es convertir una cadena que realmente utiliza ISO-8859-1 pero que tiene caracteres codificados a con UTF-8. La conversión genera el string en ISO-8859-1 pero con un sólo byte para todos los caracteres, con lo que se verán correctamente.

Se utiliza así:

utf8_decode("Solución útil y apañada a UTF-8");

Devolverá una cadena el texto correctamente escrito:

Solución útil y apañada a UTF-8

Codificar una cadena al juego de caracteres UTF-8 - encode utf8 php

Existe una función para hacer justo el paso contrario, que vamos a ver también en desarrollo web .com. Es decir, partiendo de una cadena en el juego de caracteres ISO-8859-1, obtener la correspondiente traducción a UTF-8.

Esto lo podemos necesitar, por ejemplo, si nuestra base de datos está definida con UTF-8 y tenemos entrada de datos ISO-8859-1.

El uso es bien simple:

echo utf8_encode("Mañanas de programación PHP");

Y devolverá el correspondiente string convertido a UTF-8, que si lo mostramos en una página que utiliza el juego de caracteres ISO-8859-1, se vería de esta manera:

Mañanas de programación PHP

Comentarios
Fueron enviados 8 comentarios al artículo
5 comentarios no revisados
3 comentarios revisados:
Por: Fernando
02/10/08
EN JSP TAMBIEN HAY UNA FUNCION COMO LA DE PHP ?
Por: Sergio
04/11/08
Como hago para aplicar esta función a este fragmento del codigo que viene de tomar los datos de un formulario html:

-------------------------------------------------
Nombre: ".$_POST['nombre']."
Apellido: ".$_POST['apellido']."
Empresa / Institución: ".$_POST['empresa']."
Area y Cargo: ".$_POST['area']."
E-mail: ".$_POST['correo']."
Ciudad: ".$_POST['ciudad']."
País: ".$_POST['pais']."
Teléfono: ".$_POST['telefono']."
------------------------------------------------

Este fragmento lo que hace es tomar los datos de un formulario html y enviarlo por mail. Pero al mail me llegan todos los datos del formulario sin codificar y es muy dificil de leer.
Que puedo hacer?? como aplico esta función?
Desde ya muchas gracias.
Por: Carlos Salas
14/11/08
Para aplicarlo a un formulario de correo lo que se debe hacer es algo asi:

ejm:
$nombre=$_GET['Nombre'];
...
$msg .= " Nombre: ".utf8_decode($nombre);
...
en el caso anterior como ven, la funcion se aplica en la linea del mensaje. No directamente en la variable que está siendo rescatada del formulario...
en caso de usar campos adiconales fijos (por ejemplo):
$msg .= " N".utf8_decode(ú)."mero de ni".utf8_decode(ñ)."os: ".$niños;
---> en este caso la función se aplica a un texto específico que será enviado conjuntamente con el mensaje, seguido tambien de una variable que no hace uso de la función.

Lo detallaría más pero estoy algo ocupado... si requieren ayuda, pueden escribirme al correo, y cuando pueda; les contesto.

Suerte, espero que les sirva.

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo
Copyright | Publicidad | Acerca de | Datos legales | Contacta