Foros del Web » Programando para Internet » PHP »

Incluir Caracteres especiales en Base de Datos mediante PHP

Estas en el tema de Incluir Caracteres especiales en Base de Datos mediante PHP en el foro de PHP en Foros del Web. Buenas a todos. Tengo un problema introduciendo registros a mi Base de Datos. Tengo un formulario que manda cadenas de texto a una baso de ...
  #1 (permalink)  
Antiguo 25/11/2008, 18:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Incluir Caracteres especiales en Base de Datos mediante PHP

Buenas a todos. Tengo un problema introduciendo registros a mi Base de Datos. Tengo un formulario que manda cadenas de texto a una baso de datos remota. Cuando lo hago, cargo la base de datos en otra página pero los caracteres especiales (ñ, letras acentuadas, etc) se muestran como cosas extrañas dentro de la bsae de datos. Los caracteres LLEGAN a la base de datos ya distorsionados, puesto que yo hago el filtrado de la base de datos a la página correctamente mediante htmlentities(). Hay algo que pueda hacer para evitar este problema?

Cabe destacar lo siguiente:
Probé exactamente el mismo script antes de subirlo al servidor en mi PC y funcionaba perfectamente. El charset de ambas bases de datos es utf8_unicode_ci, no uso ningún tipo de filtrado hacia la base de datos. Incluso, hice una prueba de que era lo que estaba insertando a la base de datos, y el PHP no modifica el contenido. Después de la inserción, hago un echo a lo que insertó y tiene los datos correctamente capturados.

Última edición por AeroCross; 25/11/2008 a las 19:05 Razón: Adición de Información
  #2 (permalink)  
Antiguo 25/11/2008, 20:17
 
Fecha de Ingreso: agosto-2002
Mensajes: 202
Antigüedad: 21 años, 8 meses
Puntos: 1
Respuesta: Incluir Caracteres especiales en Base de Datos mediante PHP

Hola,

Mira un posible problema es que el conjunto de caracteres definido en el head de la pagina que contiene el formulario sea distinto al del tipo de archivo de texto en el que este grabado ese codigo.

Mi sugerencia es que pruebes definir otra codificacion en el archivo html (o php. etc) que tiene el formulario. Para esto podes incluir en el head de ese archivo.

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

y sino probar con:

<meta content="text/html;charset=utf-8" http-equiv="Content-Type" />

(una de las dos) grabando siempre el archivo de la forma que lo haces, es decir sin cambiarle la codificacion (utf-8, ansi, etc). Todo esto tomando en cuenta que a la base de datos llegan los caracteres ya distorsionados, sino puede haber otras causas como la codificacion definida en la base de datos, etc.

Saludos,
Leo
__________________
Principio Legal Legalidad en la web y Directorio de Software Open Source
Pais Once El lugar donde descubrir una ciudad
  #3 (permalink)  
Antiguo 25/11/2008, 20:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Incluir Caracteres especiales en Base de Datos mediante PHP

Excelente sugerencia. Mi procedimiento inserción de data está estructurado de la siguiente forma:

modify.php (Donde está el formulario, charset UTF-8 en el Header) -> process_add.php (No tiene header, solo es un script de adición de data) -> Base de Datos (Codificación de Base de Datos y tabla utf8_unicode_ci -> modify.php mostrando exitosamente la inserción.

A ver si funciona.

Edit:

Utilizé la función utf8_decode() para que pasara correctamente los datos a la BD. No entiendo porq, según la definición "asume" que los datos son UTF-8 y los pasa a ISO-8859-1, a una BD que es UTF-8... No tiene sentido.

Última edición por AeroCross; 25/11/2008 a las 22:44 Razón: Solución
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:09.