Foros del Web » Programando para Internet » PHP »

Codificación utf-8. Php no imprime bien. por qué?

Estas en el tema de Codificación utf-8. Php no imprime bien. por qué? en el foro de PHP en Foros del Web. Hola! Pues en una pagina dinámica algunos textos salen bien (con acentos y las ñ) y en otros no. Me he dado cuenta que es ...
  #1 (permalink)  
Antiguo 28/01/2008, 07:59
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Pregunta Codificación utf-8. Php no imprime bien. por qué?

Hola!

Pues en una pagina dinámica algunos textos salen bien (con acentos y las ñ) y en otros no.


Me he dado cuenta que es cuando hago print en php, que salen mal los acentos. En cambio cuando el texto está con acento en el editor dreamweaver y es código html, entonces sí sale bien.

¿Qué demonios pasa aquí?. No entiendo por qué pasa esto.

Y son print normales, con los textos con acento y ñ, no es desde una base de datos.



Gracias por la ayuda, es una pregunta tonta...pero demonios...
__________________
Darkgaze
  #2 (permalink)  
Antiguo 28/01/2008, 08:34
 
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 12 años
Puntos: 0
Re: Codificación utf-8. Php no imprime bien. por qué?

Hola darkgaze ,

puede ser que cuando escribes en el dreamweaver , el editor escriba los simbolos especiales para que aparezcan los acentos (á , &ntilde etc...).
Sin embargo si utilizas otro editor, no apareceran.

La solucion , que a mi me funciona, es utilizar un editor que soporte utf-8, como notepad++, y una vez lo tengas avierto, ves a : Formato -- Codificar en utf-8.
También tendras que añadir la directiva charset=utf8 en el head de tu página, quedaria algo asi :

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

A partir de ahora todo lo que escribas sera utf-8, que es la codificacion universal que admite todo tipo de simbolos extraños de todas las lenguas, como la ñ, las tildes, etc.... y no tendrás que preocuparte de escribir &aacute ni nada por el estilo.

Saludos y espero que te sirva.
  #3 (permalink)  
Antiguo 28/01/2008, 08:55
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.718
Antigüedad: 12 años, 6 meses
Puntos: 28
Re: Codificación utf-8. Php no imprime bien. por qué?

man... prueba de esta manera este me sirve a mi mucho...

Código PHP:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
Usalo en la pagina destino o final... es decir donde se mostraran los datos..


Espero te funcione... saludos man!!!!
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 28/01/2008, 09:36
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

A ver chicos. Os he dicho que ya he puesto la cabecera.

Os lo he dicho?. Bueno, se de que hablo!, si se muestran las ñ es porque las cabeceras están bien.

Aunque no pongo charset=iso-8859-1", si no utf-8

y no utf8 seguido. En todas partes es con guión, y luego veo en otros sitios que no. La que funciona es con guión!!



Esa idea está bien. Pero no entiendo por qué pasa esto. Yo tengo otra página donde sí funciona. Me parece un rollo tener que estar codificando continuamente en otro editor de texto.


En mi otra página no hay problemas...estoy un poquitín mosqueada....
No puede ser que el dreamweaver de errores. Incluso está en español. No puedo creerlo...
__________________
Darkgaze
  #5 (permalink)  
Antiguo 28/01/2008, 09:38
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.718
Antigüedad: 12 años, 6 meses
Puntos: 28
Re: Codificación utf-8. Php no imprime bien. por qué?

bueno a mi me resulta siempre efectivo charset=iso-8859-1 ... jamas me falla si quieres prueba y me cuentas... si no t resulta entonces avisame de igual manera .. hay muchas opciones :)
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 28/01/2008, 10:55
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

Hola!

Pues si. He cambiado a esto y EFECTIVAMENTE se ha arreglaod.


PERO OH! sin embargo en el índice ahora la ñ sale mal.
...

como es eso???

Sale una A+ (+- o algo así).


He probado a cambiar ' por " en print, y poner ' en los nombres con " dentro...

no se...


Esto se imprime con PHP desde una función. No entiendo por qué salen ahora mal las ñ... de este texto en concreto (porque del resto salen bien!)
__________________
Darkgaze
  #7 (permalink)  
Antiguo 28/01/2008, 10:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 9 meses
Puntos: 2135
Re: Codificación utf-8. Php no imprime bien. por qué?

¿Esa función esta definida en otro archivo?

Saludos.
  #8 (permalink)  
Antiguo 28/01/2008, 11:25
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

Si!

A lo mejor es que como ese otro archivo no tiene cabeceras porque solo contiene php... a lo mejor no sabe qué codificación es... no se!
__________________
Darkgaze
  #9 (permalink)  
Antiguo 28/01/2008, 11:35
 
Fecha de Ingreso: octubre-2006
Mensajes: 173
Antigüedad: 13 años, 4 meses
Puntos: 3
Re: Codificación utf-8. Php no imprime bien. por qué?

si estas con Apache y eres el administrador
agrégale esto AddDefaultCharset utf-8 al fichero httpd.conf de Apache
restar apache y arreglado
2 si no eres el administrador entonces agrégalo al fichero .htaccess
espero te sirva
no olvides que si tienes utf-8 en el fichero httpd.conf de apache tienes que cambiar el iso-8859-1 a utf-8 en tus paginas
__________________
¨

Última edición por toforo; 28/01/2008 a las 11:41
  #10 (permalink)  
Antiguo 28/01/2008, 13:13
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

Ya veo...

mm...
una cosita: Yo uso apache para ver mi web aquí. Pero cuando la suba...como se qeu allí también funcionará?
__________________
Darkgaze
  #11 (permalink)  
Antiguo 28/01/2008, 13:15
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

Había esta linea


AddCharset UTF-8 .utf8


Entonces las cabeceras hay que ponerlas con utf-8 o utf8 ? me estan liando entre todos xD



El problema es que si pongo el iso de antes, salen bien las html, pero las paginas php que imprimen cosas aparte no funcionan. Y si pongo utf-8 no funcionan las html, pero las php sí...
o algo asi´recuerdo (no estoy en casa ahora)
__________________
Darkgaze
  #12 (permalink)  
Antiguo 28/01/2008, 13:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 9 meses
Puntos: 2135
Re: Codificación utf-8. Php no imprime bien. por qué?

Porque no codificas tus paginas en iso o utf-8 (las PHP) si usas windows puedes usar Notepad++.

Saludos.
  #13 (permalink)  
Antiguo 28/01/2008, 13:42
 
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 12 años
Puntos: 0
Re: Codificación utf-8. Php no imprime bien. por qué?

El problema debe ser que no esta grabado el archivo en formato utf8, tu le estas diciendo a apache que procese el fichero como utf8, pero el fichero no esta grabado como utf8, como te dije en el primer post... usa Notepad++ y graba tu fichero en formato utf8.

Saludos.
  #14 (permalink)  
Antiguo 30/01/2008, 08:18
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 12 años
Puntos: 1
Re: Codificación utf-8. Php no imprime bien. por qué?

A me pasa el mismo problema que a darkgaze. algunas de las características con las que yo estoy trabajando:
Linux-ubuntu
editando el texto con vim (con la opción set encoding=UTF-8)
y colocando las cabeceras en el archivo index.php <meta http-equiv="content-type" content="text/html;charset=UTF-8" />

cuando abro la página en el firefox no tengo ningún problema, pero cuando desde index.php incluyo otro php (ejemplo <? include 'fecha.php'; ?>) y hago un 'echo' desde este último tengo problemas con las áéíóúñ generadas en ese archivo incluido.

por ultimo, si en el navegador cambio la codificación de caracteres a ISO-8859-1 se invierte el problema.

ya hice lo que me aconseja toforo con el archivo .htaccess pero tampoco pasa nada.

Cualquier consejo al respecto que me ayude a encontrar la respuesta ha este problema será bienvenido.

De antemano grax.
  #15 (permalink)  
Antiguo 30/01/2008, 10:17
Avatar de laaccaal  
Fecha de Ingreso: julio-2003
Ubicación: Murcia
Mensajes: 147
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Codificación utf-8. Php no imprime bien. por qué?

Hola:

Antes que nada , con respecto a Apache, este asignara el unicode que tiene por defecto si es que en tu pagina no tengas declarado ninguno.

Ahora el motivo por que te salgan caracteres raros tanto en utf-8 y la iso es porque es posible que sin querer hayas ingresado texto en modo diseño y en modo codigo de dreamweaver, tienes que decidirte en que entorno vaz a meter texto.

Una pauta, cuando le metes a la cabecera de tu página la iso-8859-1, puedes meter texto con ñ y vocales acentuadas á,é, í, ó, ú, ´r je je ej en modo codigo de dreamweaver.

Echo lo anterior el navegador interpretara tus caracteres segun el charset que tengas declarado.

bye
__________________
Album Fotos
Blog MisApuntes
  #16 (permalink)  
Antiguo 30/01/2008, 11:51
 
Fecha de Ingreso: enero-2008
Mensajes: 11
Antigüedad: 12 años
Puntos: 1
Re: Codificación utf-8. Php no imprime bien. por qué?

Sres:


Acabo de encontrar la solución a mi problema en particular, todo el origen es por el bendito "copy-paste" el archivo fecha.php (ver arriba) lo he bajado y ocupado haciendo modificaciones en ese mismo archivo. Probablemente quien hizo el script tenía un editor con otra codificación y el vim respeto dicha codificación al momento de guardar.

Solución: hice un copy-paste a un archivo que nombre funcion.php y bendito remedio. Con el archivo fecha.php error de caracteres, con el funcion.php caracteres respetando
UTF-8.

Cabe ahora preguntaros ¿como puedo ver las propiedades del documento que edito? (tanto en windows como Linux, total para los que usan windows también sufren del mismo problema).

y está es otra pregunta que no pertenece al este topico pero se relaciona con el tema:

En mysql tengo codificación latin1, supongo que es conveniente pasarla a UTF-8. ¿como lo hago?. si no lo hago ¿qué función de php me permite hacer el cambio?, y el .htaccess ¿no me quedo muy claro donde debe estar?(apache deja mis paginas en /var/www/).

Cualquier respuesta a una de estas preguntas como siempre es bienvenida, y espero que lo que entregue como solución la haya servido a alguien.

Grax de antemano.
  #17 (permalink)  
Antiguo 30/01/2008, 14:29
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

El htaccess está en la raíz del index.html. Estará dentro de la www.
__________________
Darkgaze
  #18 (permalink)  
Antiguo 30/01/2008, 14:34
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 14 años
Puntos: 2
Re: Codificación utf-8. Php no imprime bien. por qué?

Pues ya lo voy pillando...pero es un tema difícil. a ver si lo entiendo bien.

Me he bajado Notepad++. Espero que con esto pueda resolver mis problemas
Mil gracias.
__________________
Darkgaze
  #19 (permalink)  
Antiguo 30/01/2008, 17:11
 
Fecha de Ingreso: abril-2007
Mensajes: 66
Antigüedad: 12 años, 10 meses
Puntos: 0
Re: Codificación utf-8. Php no imprime bien. por qué?

Utiliza esta función , ami me resulto

function filtro($contenido){
$contenido=ereg_replace("Á","&Aacute;",$contenido );
$contenido=ereg_replace("À","&Agrave;",$contenido );
$contenido=ereg_replace("È","&Egrave;",$contenido );
$contenido=ereg_replace("Ì","&Igrave;",$contenido );
$contenido=ereg_replace("Ã’","&Ograve;",$contenido );
$contenido=ereg_replace("Ù","&Ugrave;",$contenido );
$contenido=ereg_replace("á","&aacute;",$contenido );
$contenido=ereg_replace("Ã*","&agrave;",$contenido );
$contenido=ereg_replace("é","&eacute;",$contenido );
$contenido=ereg_replace("Ã*","&iacute;",$contenido );
$contenido=ereg_replace("ó","&oacute;",$contenido );
$contenido=ereg_replace("ú","&uacute;",$contenido );
return $contenido; }

y a tu variable solo le colocas lo siguiente:

filtro($variable);
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:26.