¿ como corregir problemas de acentos en las paginas web ? SOLUCION para PHP, MySql , HTML (actualizado 2014)

Bueno bueno es un grave problemas para los hispanohablantes en las paginas web que no salgan con caracteres extraños los acentos o letra Ñ.
Lo mejor para solucionar todo este lio y que se vea correctamente en cualquier pais que accedan (EEUU o España o Rusia o Colombia o etc ....) es tener todo en codificacion UTF-8.

Ahora vamos a explicar pero lo vamos a dividir en 2 secciones

  1. Solucion solo para pagina web (sin base datos , ej: diseñadores web o pagina basica)
  2. Solucion para pagina web PHP (con base datos MySql)

Solución solo para pagina web (sin base datos , ej: diseñadores web o pagina basica)

Bueno primero que nada a cada archivo que edites o que creas debe estar configurado en codificación UTF-8. 
Cada programa tiene su manera especifica de como hacerlo casi siempre esto esta en la parte de "opciones" o "ajustes".
Ejemplo practico :
En Adobe Dreamweaver deben estar como lo muestra en rosa 

En Notepad++ debe estar tildado como marca la flecha roja

NOTA : no recomiendo que creen o editen una pagina web con el editor "Block de Notas" 
tiene problemas de codificacion y te perjudica si usas acentos.

Una vez hecho esto deben poner esto al principio de la pagina y para cada archivo LISTO ahora no deberian tener problemas.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es" >
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >

Solución para pagina web PHP (con base datos MySql)

Primero deben hacer lo de la sección anterior : "Solución solo para pagina web (sin base datos , ej: diseñadores web o pagina básica)".
Una vez hecho , solo queda verificar en PHP la configuración de las conexiones a MySql 

PHP con conexión antiguas deben usar mysql_set_charset(.......) :

$link = mysql_connect( $dbhost,$dbusuario,$dbpassword );
mysql_set_charset("utf8", $link);

PHP con conexión mas vigente (PDO) :

$db = new PDO(
  'mysql:host=localhost;dbname='.$bd.';charset=utf8', 
  $mysql_user, $mysql_password ,
  array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );


Eso es todo amigosssss , cualquier problema me dejan un comentario

Comentarios

  1. Gracias por tel aporte, es muy útil, sólo una pregunta, ¿en el ejemplo debe ir el nombre de mi base de datos, user y pass, o se utiliza tal y como está?. Gracias.

    $db = new PDO(
    'mysql:host=localhost;dbname='.$bd.';charset=utf8',
    $mysql_user, $mysql_password ,
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );

    ResponderEliminar
    Respuestas
    1. hola jose :
      te comento que si , a las variables $bd , $mysql_user ,$mysql_password y "localhost" le debes asignar la base y los accesos y el servidor (en caso de no ser un servidor privado o dedicado o virtual siempre va LOCALHOST)

      Eliminar

Publicar un comentario