Foros del Web » Programando para Internet » PHP »

Volviendome loco con el charset y los acentos

Estas en el tema de Volviendome loco con el charset y los acentos en el foro de PHP en Foros del Web. Hola, espero que este no sea un tema demasiado sobado, he usado el buscador y el google y aunque he leido bastante sigo hecho un ...
  #1 (permalink)  
Antiguo 10/09/2010, 07:02
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 1
Volviendome loco con el charset y los acentos

Hola, espero que este no sea un tema demasiado sobado, he usado el buscador y el google y aunque he leido bastante sigo hecho un lio con lo del charset y los acentos.

¡Lo que no consigo entender es que en una parte de la misma página me salen bien los acentos y en otra no!

Tengo un código parecido a este (simplificado al máximo):

Código:
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

</head>
<body>
<?php
include( 'menu.php' );
?>
      <div class="texto">Haz una búsqueda:</div>

etc.
Bien, pues resulta que en lugar de la "ú" de "búsqueda" salen carácteres extraños, pero en cambio los acentos que hay dentro del include de menú ¡si que salen bien!

Si cambio el charset a UTF8 resulta que me sale bien el acento de "búsqueda" pero no el del include.

(dentro del include no hay ninguna referencia a charsets ni nada y los acentos no están dentro de un echo).

Me estoy volviendo loco con esto, no entiendo nada.
  #2 (permalink)  
Antiguo 10/09/2010, 07:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Volviendome loco con el charset y los acentos

la codificación de archivos también es importante, osea, no solo el charset del documento...

también al momento de guardar tus archivos, todos deberían compartir la misma codificación... quizá esa sea la diferencia entre tu documento principal y el include
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/09/2010, 07:29
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Volviendome loco con el charset y los acentos

Cita:
Iniciado por pateketrueke Ver Mensaje
la codificación de archivos también es importante, osea, no solo el charset del documento...

también al momento de guardar tus archivos, todos deberían compartir la misma codificación... quizá esa sea la diferencia entre tu documento principal y el include
Gracias por responder pateketrueke.

Los dos archivos han sido guardados de la misma manera, con el komodo Edit con la codificación por defecto que no sé cual será.

Saludos!
  #4 (permalink)  
Antiguo 10/09/2010, 08:09
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 6 meses
Puntos: 71
Respuesta: Volviendome loco con el charset y los acentos

Cambia el charset ISO.... por utf-8
  #5 (permalink)  
Antiguo 10/09/2010, 08:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Volviendome loco con el charset y los acentos

Cita:
Iniciado por DooBie Ver Mensaje
Cambia el charset ISO.... por utf-8
Al hacer eso el error cambia, los acentos del fichero principal salen bien y el del include mal. (?¿?).
  #6 (permalink)  
Antiguo 10/09/2010, 08:39
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 6 meses
Puntos: 71
Respuesta: Volviendome loco con el charset y los acentos

Si te pasa eso es por que los ficheros tienen diferente charset al guardarlos.
Abres Komodoedit, y te aseguras mirando en preferencias que estés usando utf SIN BOM (muy importante) luego abres los dos ficheros, editas y guardas de nuevo, dejas el charset con utf8 y pruebas.
  #7 (permalink)  
Antiguo 10/09/2010, 08:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Volviendome loco con el charset y los acentos

Cita:
Iniciado por Washby Ver Mensaje
Al hacer eso el error cambia, los acentos del fichero principal salen bien y el del include mal. (?¿?).
exacto!!

una cosa importante a considerar es el tratamiento interno que realiza PHP al respecto de include/require

y bueno, no deberías preocuparte tanto... en su lugar deberías emplear la entidades HTML correspondientes, así ya no te das de golpes y evitas el problema sin importar que codificaciones emplees...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 10/09/2010, 10:39
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Volviendome loco con el charset y los acentos

Cita:
Iniciado por DooBie Ver Mensaje
Si te pasa eso es por que los ficheros tienen diferente charset al guardarlos.
Abres Komodoedit, y te aseguras mirando en preferencias que estés usando utf SIN BOM (muy importante) luego abres los dos ficheros, editas y guardas de nuevo, dejas el charset con utf8 y pruebas.
Lo he probado y nada, sigue pasando lo mismo.

Cita:
Iniciado por pateketrueke
exacto!!

una cosa importante a considerar es el tratamiento interno que realiza PHP al respecto de include/require

y bueno, no deberías preocuparte tanto... en su lugar deberías emplear la entidades HTML correspondientes, así ya no te das de golpes y evitas el problema sin importar que codificaciones emplees.
Finalmente lo he resuelto como dices gracias, usando lo las entidades, aunque es un poco incómodo y me fastidia no entender por qué pasa esto.

Si alguien más tiene alguna idea más soy todo oidos (o ojos en este caso) sino gracias a todos por vuestras respuestas igualmente.

Saludos!
  #9 (permalink)  
Antiguo 10/09/2010, 14:16
 
Fecha de Ingreso: enero-2010
Mensajes: 25
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Volviendome loco con el charset y los acentos

Esto funciona siempre:

Sustituye en el <head> tu etiqueta por esta:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<? utf8_decode($cadena); ?>

Nunca más tendrás problemas con los caracteres extraños.

Lo que sí debes comprobar es que si ya has escrito desde un formulario, puede que en tu base de datos se hayan grabado los textos con caracteres extraños, de modo que como ya están escritos extraños en la base de datos, te los seguirá mostrando así. Debes asegurarte de que lo que haya en tu base de datos no contenga caracteres extraños.
Con este código, todo lo que escribas desde un formulario, enviará los caracteres correctos a la bd.
Saludos.
  #10 (permalink)  
Antiguo 12/09/2010, 10:51
 
Fecha de Ingreso: mayo-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Volviendome loco con el charset y los acentos

Cita:
Iniciado por jrcomposer Ver Mensaje
Esto funciona siempre:

Sustituye en el <head> tu etiqueta por esta:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<? utf8_decode($cadena); ?>

Nunca más tendrás problemas con los caracteres extraños.

Lo que sí debes comprobar es que si ya has escrito desde un formulario, puede que en tu base de datos se hayan grabado los textos con caracteres extraños, de modo que como ya están escritos extraños en la base de datos, te los seguirá mostrando así. Debes asegurarte de que lo que haya en tu base de datos no contenga caracteres extraños.
Con este código, todo lo que escribas desde un formulario, enviará los caracteres correctos a la bd.
Saludos.
Lo que dices de las bases de datos ya lo sufrí hace poco (es mi primer proyecto en php) y lo solucioné con el decode como dices. Lo que no se me había ocurrido usarlo para los textos de la página, y efectivamente funciona, aunque finalmente no me ha hecho falta he conseguido solucionar el problema con el charset iso-8859-1 y grabando el fichero en el mismo formato con una opción del Komodo (como decía Doobie anteriormente pero en vez del UT8 me ha ido bien con el 8859).

Lo que no entiendo es que otras páginas me funcionan bien con la codificación por defecto del komodo y esta no.

Gracias a todos!.
Saludos!

Etiquetas: acentos, charset, loco
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 05:15.