Problemas con los acentos en mysql

Hola te cuento tengo el siguiente código:
<?php
/* Usuario para la conexion a Mysql. */
$usurio = "root";
/* Password para la conexion a Mysql. */
$passwd = "123456";
 /* Host para la conexion a Mysql. */
$host = "localhost";
/* Base de Datos que se seleccionará. */
$bd = "ince";
/*Nombre de la tabla y el fichero a descargar*/
/*Aqui validaremos la tabla a exportar*/
//funcion para cambiar el acento
function cambiar($valor)
{
    $nopermitidos = array("'",'\\','<','>',"\"",";");
    $nuevo = str_replace($nopermitidos, "", $valor);
    return $nuevo;
}
//fin funcion
$tabl=$_GET["tb"];$dd=$_GET["dd"];$dm=$_GET["dm"];$da=$_GET["da"];
$hd=$_GET["hd"];$hm=$_GET["hm"];$ha=$_GET["ha"];
$fecha1=$da.'-'.$dm.'-'.$dd.' 00:00:00';
$fecha2=$ha.'-'.$hm.'-'.$hd.' 22:00:00';
//variable q indica borrar tabla
$btok=$_GET["btok"];
$tablas = array("".$tabl."");
$nombre = $tabl.".sql";
/* Determina si la tabla será vaciada (si existe) cuando  restauremos la tabla. */            
$drop = false;
$compresion = false;
/* Conexion y eso*/
$conexion = @mysql_connect($host, $usurio, $passwd)
or die("No se pudo conectar con el servidor MySQL: ".mysql_error());
mysql_select_db($bd, $conexion)
or die("No se pudo seleccionar la Base de Datos: ". Mysql_error());
//Cambiamos FechaI a Campo Datetime
     $cambiar=("ALTER TABLE $tabl CHANGE `FechaI` `FechaI` DATETIME NULL DEFAULT NULL");
     $ejecutar=mysql_query($cambiar, $conexion);
/* Se busca las tablas en la base de datos */
if ( empty($tablas) ) {
    $consulta = "SHOW TABLES FROM $bd;";
    $respuesta = mysql_query($consulta, $conexion)
    or die("No se pudo ejecutar la consulta: ".mysql_error());
    while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) {
        $tablas[] = $fila[0];
    }
}
/* Se crea la cabecera del archivo */
$info['dumpversion'] = "1.1b";
$info['fecha'] = date("d-m-Y");
$info['hora'] = date("h:m:s A");
$info['mysqlver'] = mysql_get_server_info();
$info['phpver'] = phpversion();
ob_start();
print_r($tablas);
$representacion = ob_get_contents();
ob_end_clean ();
preg_match_all('/(\[\d+\] => .*)\n/', $representacion, $matches);
$info['tablas'] = implode(";  ", $matches[1]);
$dump = <<<EOT
# +===================================================================
# | Respaldo! {$info['dumpversion']}
# | Sistema Realizado por <[email protected]>
# |
# | Generado el {$info['fecha']} a las {$info['hora']} por el usuario '$usurio'
# | Servidor: {$_SERVER['HTTP_HOST']}
# | MySQL Version: {$info['mysqlver']}
# | PHP Version: {$info['phpver']}
# | Base de datos: '$bd'
# | Tablas: {$info['tablas']}
# |
# +-------------------------------------------------------------------
EOT;
foreach ($tablas as $tabla) {
    $drop_table_query = "";
    $create_table_query = "";
    $insert_into_query = "";
    //Eliminar Campo Estatus
    if($tabla=='inasweb'){
         $eliminar_campos=mysql_query("ALTER TABLE inasweb DROP TTI,DROP Materia,DROP Estatus");
    }else{
         $eliminar_campos=mysql_query("ALTER TABLE caliweb DROP Estatus");
    }
    //Eliminar campos vacios
    if($tabla=='inasweb'){
         $eliminar_cero=mysql_query("Delete from inasweb where HIJ='0'&&HII='0'");
    }else{
         $eliminar_sin_nota=mysql_query("Delete from caliweb where calificacion='0'");
    }
     //Optimizamos la tabla
      $optimizar=mysql_query("OPTIMIZE TABLE ".$tabla."");
    /* Se halla el query que será capaz vaciar la tabla. */
    /*
    if ($drop) {
        $drop_table_query = "DROP TABLE IF EXISTS `$tabla`;";
    } else {
        $drop_table_query = "# No especificado.";
    }
    /* Se halla el query que será capaz de recrear la estructura de la tabla. */
    /*
    $create_table_query = "";
    $consulta = "SHOW CREATE TABLE $tabla;";
    $respuesta = mysql_query($consulta, $conexion)
    or die("No se pudo ejecutar la consulta: ".mysql_error());
    while ($fila = mysql_fetch_array($respuesta, MYSQL_NUM)) {
            $create_table_query = $fila[1].";";
    }
    */
    /* Se halla el query que será capaz de insertar los datos. */
    $insert_into_query = "";   
    //en la siguiente linea se toma en cuenta las fechas...
    $consulta=("SELECT * FROM $tabla where FechaI between '$fecha1' and '$fecha2'");
    $respuesta=mysql_query($consulta, $conexion)
    or die("No se pudo ejecutar la consulta: ".mysql_error());
        //if(!$repuesta){ exit("No hay Consultas entre $dd/$dm/$da al $hd/$hm/$ha<br><a href=index.php>VOLVER</a>");}
    while ($fila = mysql_fetch_array($respuesta, MYSQL_ASSOC)) {
            $columnas = array_keys($fila);
            foreach ($columnas as $columna) {
                if ( gettype($fila[$columna]) == "NULL" ) {
                    $values[] = "NULL";
                } else {
                    //$values[] = "'".mysql_real_escape_string($fila[$columna])."'";
                    $values[] = "'".stripslashes(mysql_real_escape_string($fila[$columna]))...

1 Respuesta

Respuesta
1
El problema está en la codificación de caracteres de tu servidor.
Lee el siguiente artículo y configura tu server de esa forma.
http://www.s3v-i.net/bases-de-datos/mysql-charset-y-collation/
Agrego lo siguiente:
Con la función
mysql_real_escape_string();  funciona excelente pero a la hora de consultar, ocurre problema, aparecen palabras mochas, ejemplo:
Informática cambia a inform
Trámite cambia a Tr
Y así sucesivamente, por lo que no me sirve...
Hola, gracias por responder, seguí esas instrucciones, pero exporta tanto al servidor local como al Remoto, pero ahora las palabras quedan así:
¿inform?tica
¿Tr?mite
Y así sucesivamente...
No basta con cambiar la codificacióin del servidor. Debes cambiar la codificación de todas las tablas, y de todas las columnas de texto que haya en ellas.
Animo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas