Foros del Web » Programando para Internet » PHP »

Codificación de caracteres: eterno dolor de cabeza.

Estas en el tema de Codificación de caracteres: eterno dolor de cabeza. en el foro de PHP en Foros del Web. Buenas. Como se habran dado cuenta, tengo problemas al mostrar los caracteres. Hay algo q no entiendo y he leido seguido por ahi cuando dicen: ...
  #1 (permalink)  
Antiguo 09/06/2010, 14:26
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Codificación de caracteres: eterno dolor de cabeza.

Buenas.
Como se habran dado cuenta, tengo problemas al mostrar los caracteres.
Hay algo q no entiendo y he leido seguido por ahi cuando dicen: "...guardar los archivos con cierta codificacion...", y creo q ese es mi problema.
Entonces la pregunta es: hoy en dia, q codificacion hay q usar?, tanto en los meta, como en la base de datos y como saber con q codificacion se guardan los archivos?
Gracias.
  #2 (permalink)  
Antiguo 09/06/2010, 14:34
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

La que quieras... por defecto (creo ¿?) todos los programas en ingles vienen con codificacion utf8... pero si quieres trabajar con acentos, ñ y toda la gama de caracteres freak de la lengua hispana, te conviene usar latin1 en cualquiera de sus versiones.

Ahora... si vas a usar latin1 en html debes usar charset="ISO-8859-1".

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 09/06/2010, 14:46
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

La que se está tomando por estándar es la utf-8.
  #4 (permalink)  
Antiguo 09/06/2010, 15:03
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Entiendo, hasta ahi tengo todo bien entonces, los metan tienen iso-8859-1 y la bd esta en latin1_general_ci al igual q todas sus tablas.
Pero lo q no entiendo es eso de lo guardar los archivos con la codificacion, eso lo hace automaticamente el dreamweaver?
Por ejemplo, lei q otro usuario tenia problemas con los caracteres y veia mal la letra ñ, entonces le responde otro usuario lo siguiente:
Cita:
Manteniendo una coherencia entre el juego de caracteres que usas para guardar el archivo, lo que pones en el meta, lo que guardas en la base de datos
...y como el tema no se siguio, no se cual fue la solucion.

...y aca hay otra respuesta de un moderador pero no respondio el q pregunto:
Cita:
Bueno, la base de datos está en UTF-8, ¿y los archivos? ¿están guardados con esa codificación?
...entonces quiero saber eso de "guardar los archivos con cierta codificacion", donde me fijo o como me doy y como hago para guardarlos con la cofificacion q yo quiera.
  #5 (permalink)  
Antiguo 09/06/2010, 15:12
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

respecto a los archivos se guardan con codificación respectiva a la codificación que tengas en tu db, es a lo que se refiere con `mantener una coherencia`, es decir, si vas a trabajar con latin1, tus archivos se codifican en ISO-8859-1 (creo que en ansi vale), si usas utf8 tus archivos deben codificarse en utf8 también (aunque se sugiere enérgicamente usar el utf-8 sin bom, sin firma de archivo).
  #6 (permalink)  
Antiguo 09/06/2010, 15:13
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Pero de que tipo de archivo estamos hablando?... un archivo directo a la base de datos como tipo blob ?... o estamos hablando de un archivo cualquiera del cual tu guardas la url y lo subes al servidor?...

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 09/06/2010, 15:20
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Eso es lo q quiero saber Marvin, creo q se refiere a lo segundo q decis vos.
  #8 (permalink)  
Antiguo 09/06/2010, 15:23
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

se refiere a los archivos .php/.htm que interactuan con tu db, los archivos binarios tipo blob no llevan codificación, o más bien...su codificación es `binaria`
  #9 (permalink)  
Antiguo 09/06/2010, 15:25
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Gracias por tu aclarion rpv, ahora me queda un poco mas claro.
  #10 (permalink)  
Antiguo 09/06/2010, 15:45
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Esto es lo q no entiendo:
Completo el form con el titulo y texto de una noticia, entonces probe ingresando las letras con acentos y en la bd se registra asi:


En la bd, los campos titulo y texto tienen latin1_general_ci, pero por q el titulo me lo muestra con acentos y el texto me lo muestra como si estuviese usando utf?, eso es lo q no logro comprender.

Y al mostrarlo lo muestra bien:


La codificacion de la bd es la siguiente:


...al igual q cada campo de cada tabla.

***aclaro tambien q el archivo q procesa el form es normal, no uso utf8 encode ni decode, ni htmlentities ni nada, solamente recoge por post los datos y los registra en la bd.
  #11 (permalink)  
Antiguo 09/06/2010, 15:51
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

amigo, los caracteres acentuados existen en ambas codificaciones. Cómo esperas que te los presente? como entidades html? á ó etc?... entonces necesitas usar la función htmlentities
  #12 (permalink)  
Antiguo 09/06/2010, 15:59
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

No, lo q quiero saber es si es normal q se registren asi los datos con la codificacion q estoy usando y por q para el titulo se registra tal cual lo escribo y para el texto se registra con entidades?, será porq para el titulo uso el tipo de datos varchar y para el texto uso text?
  #13 (permalink)  
Antiguo 09/06/2010, 16:01
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

no, no es normal, se registra como entidades porque seguro que ya usas la función que te comento en uno de tus campos, en ambos casos se debería ingresar el texto tal como se escribe en los campos (con tildes), cuando hay problemas de codificación se ingresan caracteres ilegibles.
  #14 (permalink)  
Antiguo 09/06/2010, 16:09
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Por eso mismo dije q no entendia por q se registra asi ya q no le pongo ningun filtro a la variable antes de registrarla.
$Titulo = $_POST['Titulo'];
$Texto = $_POST['Texto'];

...asi como esta se registra.
La verdad no se en donde puede estar el error.
  #15 (permalink)  
Antiguo 09/06/2010, 16:11
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

se registra en el insert, en el mysql_query, busca ahí también.
  #16 (permalink)  
Antiguo 09/06/2010, 16:19
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Ya se donde esta el problema, en el editor editor wysiwyg TinyMCE, se lo desactive y ahora si registra el texto tal cual se lo escribe.
Pero entonces no seria un problema, en parte es mas seguro q registre el texto con entidades o no?
  #17 (permalink)  
Antiguo 09/06/2010, 16:35
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

si usas funciones de seguridad para prevenir inyecciones sql es lo mismo, personalmente prefiero que en la db se ingrese el texto original y después se haga el procesado.
  #18 (permalink)  
Antiguo 09/06/2010, 16:56
Avatar de reborn  
Fecha de Ingreso: febrero-2010
Mensajes: 440
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Codificación de caracteres: eterno dolor de cabeza.

Ok, gracias por tus respuestas y tu tiempo.

Etiquetas: caracteres
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 18:47.