Avatar Image
Colega ;)
Colega ;)

Estoy trabajando en un registro a la base de datos y tengo problemas con los acentos. He estado investigando por internet y aconsejan que cambies la codificación a UTF-8 (y eso he hecho) y que definas las variables de una manera determinada.

El registro consta de tres partes:

registro.php el formulario que envía los datos donde he puesto:
<meta http-equiv="content-type" content="text/html; UTF-8" />

funciones.js que contiene el envío ajax:
peticion.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; UTF-8');

Y inscribir.php donde se registra a la base de datos:
header('Content-Type: text/html; UTF-8');

Por supuesto, también he modificado los campos de la base de datos. También había probado con latin1 y con el por defecto: iso-8859-1 (aunque es cierto que en estos dos casos había olvidado modificar funciones.js). Y no hay forma.


Por otra parte, aconsejan definir las variables como:
$nombre=stripslashes(htmlentities(strtolower($_POST['nombre'])));
Antes las tenía como: $nombre=mysql_real_escape_sting(strtolower($_POST['nombre']));


Con ninguno de los cambios he podido cambiar nada. Sigue guárdandome carácteres extraños. He investigado y si hago un print $nombre; antes de insertar los datos, ya están mal codificados. ¿Alguna idea para solucionar el dichoso problema?

Gracias de antemano.
Avatar Image
Come y duerme en el foro
Come y duerme en el foro
Escrito originalmente por EffectedCard

registro.php el formulario que envía los datos donde he puesto:
<meta http-equiv="content-type" content="text/html; UTF-8" />

Has probado poniendo el juego de caracteres. De esta forma:

<meta http-equiv="conten-type" content="text/html; charset=UTF-8" />

A ver que tal. Saludos!.

Avatar Image
Colega ;)
Colega ;)

Pues al parecer ha mejorado la cosa. Vaya error más gilipoyas. Parece que la cosa va bien, pero no del todo; lo estoy revisando.

¡Muchas Gracias!

EDITO Y AÑADO:

¿Por qué si en un sitio funciona perfectamente, en el otro no?

https://effectedcard.webcindario.com/bar/adm_comensales.php?pag=1

https://effectedcard.webcindario.com/bar/registro.php

La codificación en ambos es UTF-8. Ambos lo tienen doblemente definido como:

<? header('Content-Type: text/html; charset=UTF-8'); ?>

<? header('Content-Type: text/html; charset=UTF-8'); ?>

y

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Ambos sacan los mismos datos de la misma tabla. En el segundo fichero sólo saco un resultado, en el primero saco varios.

Avatar Image
@man / @woman
@man / @woman

Parece que le sacas ya mal. En la base de datos seguro que esta bien. Yo probaria a hacer una .php que tan solo te saque un registro, y te le muestre, a ver que tal va...

Avatar Image
Come y duerme en el foro
Come y duerme en el foro

Yo emplee lo siguiente:

<?php

header('Content-Type: text/xml');
 echo '<?xml version="1.0" encoding="UTF-8"?>';

?>

Pruebalo a ver que tal te va. Aunque claro yo en ese archivo extraia los datos ya correctos...no se si te servira. Pero bueno , por intentar no se pierde nada. Saludos!.

Avatar Image
Colega ;)
Colega ;)

Sí, si el error tiene que estar en registro.php, pero no lo entiendo.

Hay la misma forma de "codificar" que en https://effectedcard.webcindario.com/bar/adm_comensales.php?pag=1 y ahí funciona bien. Lo cual hace pensar que en la base de datos está todo correcto. Voy a probar darle al config.php y a funciones.php la misma codificación por si fuera tema de que, al hacer el include, cambiaran la codificación.

aerials88, tu método no ha funcionado.

Gracias a ambos en cualquier caso. Voy a probar eso y digo algo.

EDITO: No, eso tampoco ha funcionado. Todo sigue igual. ¿Más ideas? =S

Avatar Image
Colega ;)
Colega ;)

Todo claro y solucionado. Si lo guardo con htmlentities, hay que sacarlo con html_entity_decode. En uno sí lo había puesto, en el otro se me ha pasado. ¡Gracias y lo siento!

jamon33
Usuario Novato
Usuario Novato

Si lo que te muestra mal proviene de la base de datos os voy a dar la solición más sencilla de todas. Tan solo basta con que la conexión a la base de datos de cada consulta que hagas, sea siempre desde un mismo archivo. Por ejemplo conecta.php

En ese archivo le ponemos los datos de la conexión:

<?php
/* conectar a base de datos */
mysql_connect("localhost","mibasededatos", "mipassword") ;
   mysql_select_db("mitabla");
mysql_query("SET NAMES 'utf8'");   
?>

Como véis he incluído después de la conexión el query

mysql_query("SET NAMES 'utf8'");

Con eso y un bizcocho...problema resuelto

AjVillalon
Usuario Novato
Usuario Novato

@jamon33,

Muchas Gracias tu respuesta me ayudo  y solucione mi problema de una manera muy simple ;)

Se agradece.

SunandnatureSpain
Usuario Novato
Usuario Novato

Muchísimas gracias por la ayuda, porque tenia el mismo problema, tanto en la inserción de datos como en la extracción de datos.

Y ambos errores los he solucionado incluyendo las siguienes sentencias en el fichero que corresponda, dependiendo de si va a trabajar con sentencias insert, update o select.

//Establecemos conexión con la base de datos

$abreConexion = mysql_connect("servidor", "usuario", "password");
if (!$abreConexion) {
die("Error al abrir la conexión " . mysql_error()); 
}

mysql_set_charset('utf8');  //para codificar a utf-8 al insertar datos. (insert, update)

mysql_select_db("base de datos que abrir", $abreConexion) or die("Error base de datos"); // selecciona la base de datos de la conexión que hemos abierto previamente

mysql_query("SET NAMES 'utf8'"); //para codificar a utf-8 al extraer datos (select)

jealvarez9
Usuario Novato
Usuario Novato

Muchas gracias pude resolver el problema que se me presentaba, de nuevo muchas gracias.

Escrito originalmente por @jamon33

Si lo que te muestra mal proviene de la base de datos os voy a dar la solición más sencilla de todas. Tan solo basta con que la conexión a la base de datos de cada consulta que hagas, sea siempre desde un mismo archivo. Por ejemplo conecta.php

En ese archivo le ponemos los datos de la conexión:

<?php
/* conectar a base de datos */
mysql_connect("localhost","mibasededatos", "mipassword") ;
  mysql_select_db("mitabla");
mysql_query("SET NAMES 'utf8'");   
?>

Como véis he incluído después de la conexión el query

mysql_query("SET NAMES 'utf8'");

Con eso y un bizcocho...problema resuelto

Avatar Image
Usuario Novato
Usuario Novato
Escrito originalmente por @EffectedCard

Pues al parecer ha mejorado la cosa. Vaya error más gilipoyas. Parece que la cosa va bien, pero no del todo; lo estoy revisando.

¡Muchas Gracias!

EDITO Y AÑADO:

¿Por qué si en un sitio funciona perfectamente, en el otro no?

https://effectedcard.webcindario.com/bar/adm_comensales.php?pag=1

https://effectedcard.webcindario.com/bar/registro.php

La codificación en ambos es UTF-8. Ambos lo tienen doblemente definido como:

<? header('Content-Type: text/html; charset=UTF-8'); ?>

<? header('Content-Type: text/html; charset=UTF-8'); ?>

y

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Ambos sacan los mismos datos de la misma tabla. En el segundo fichero sólo saco un resultado, en el primero saco varios.

Muuuchas gracias!!!! me pasaba exactamente lo mismo..... Ha sido incluir el codigo del header y solucionarse el problema de los caracteres raros......

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 09/Oct/2014, 17:19
craven78 GestionXls NoSetup.org32kJan/15
Por: , el 04/Ago/2011, 02:36
fb@100001468962018 GestionXls12kAug/11
Por: , el 05/May/2010, 19:08
cesarobcn NoSetup.org24kMay/10
Por: , el 24/Jun/2009, 16:37
ligoverto010kJun/09
Por: , el 11/Jun/2009, 13:17
lingo5 GestionXls NoSetup.org mariluti2414kJun/09