miércoles, 20 de junio de 2012

Error con acentos y eÑes en PHP/MySQL

Muchas veces al crear una web con PHP y MySQL, ocurre un problema al introducir y mostrar datos: estos se alteran acabando en áóñ y cosas parecidas. Cuando me pasa esto suelo empezar a toquetear cosas, cambiar charsets y traducir a ñ o á pero nada funciona. El problema es que la configuración del cotejamiento de los caracteres especiales como acentos, eñes y demás símbolos no es el mismo entre la base de datos (MySQL), el lenguaje de servidor (PHP) y el servidor (Apache).
Así que me puse a buscar y después de encontrar comentarios buenísimos de gente por los foros puedo hacer un resumen de todo lo necesario cuando nos ocurre un problema de estos (id haciendo y testeando si ya funciona todo bien paso a paso).

Guía paso a paso para solucionar el problema de los acentos y eñes

  1. Al crear la base de datos MySQL, asegúrate que los campos string y demás esten en utf8_spanish_ci y el cotejamiento de las tablas en
    utf_unicode_ci (más tarde en Operations > Collation de phpMyAdmin se puede cambiar)
  2. Pon en el <head>de todos los archivos HTML:
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  3. Y en los puramente PHP (que muestran XML, llamadas de AJAX, APIs…) pon el código:
    header("Content-Type: text/html;charset=utf-8");
  4. Al crear la conexión de PHP con MySQL, envía esta consulta justo tras la conexión:
    mysql_query("SET NAMES 'utf8'");
    (Para MsSQLi escribe $acentos = $db->query("SET NAMES 'utf8'"); )
  5. Quita el DefaultCharset del Apache o modifícalo
  6. Como última y desesperada opción, quita todos los htmlentities(); y sustitúyelo por otro parser para ‘sanitizar’ los datos.
Haciendo estos pasos se solucionará cualquier problema de codificación de caracteres.

fuente:
http://xaviesteve.com/354/acentos-y-enes-aparecen-mal-a%C2%B1-en-php-con-mysql-utf-8-iso-8859-1/#comment-1189

lunes, 25 de julio de 2011

Como crear un archivo de texto en php.

http://www.abnertrujillo.com/blog/?p=219


<html>  

<head>  

<title>Problema</title>  

</head>  

<body> <form action="pagina2.php" method="post">  

Ingrese su nombre:  

<input type="text" name="nombre">  

<br>  

Comentarios:  

<br>  

<textarea name="comentarios" rows="10" cols="40">  

</textarea>  

<br>  

<input type="submit" value="Registrar">  

</form>  

</body>  

</html>
 
/////////////////////////////////////////////////////////////////////7
 
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
  $ar=fopen("datos.txt","a") or
    die("Problemas en la creacion");
  fputs($ar,$_REQUEST['nombre']);
  fputs($ar,"\n");
  fputs($ar,$_REQUEST['comentarios']);
  fputs($ar,"\n");
  fputs($ar,"--------------------------------------------------------");
  fputs($ar,"\n");
  fclose($ar);
  echo "Los datos se cargaron correctamente.";
  ?>
</body>
</html>