Foros del Web » Programando para Internet » PHP »

utf8, ISO-8859-1 y su pu....

Estas en el tema de utf8, ISO-8859-1 y su pu.... en el foro de PHP en Foros del Web. Hola a todos, mi problema viene con acentos eñes y demás. El caso es que tengo una función que lee unos archivos de una carpeta ...
  #1 (permalink)  
Antiguo 06/07/2006, 06:56
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta utf8, ISO-8859-1 y su pu....

Hola a todos,

mi problema viene con acentos eñes y demás.

El caso es que tengo una función que lee unos archivos de una carpeta y muestra el nombre de estos archivos. Si estos archivos llevan acentos o eñes pues se ven mal.
Despues de pasarme un buen rato por estos foros y otros me doy cuenta que si a la etiqueta <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> le cambio el charset a utf-8 entonces los nombres de los archivos me los pone bien, pero todo el contenido de la web que no recoge por php se ve mal.

Pues digo yo, que la etiqueta meta la dejo con el ISO y a la variable que recoje el nombre de los archivos le meto un $archivo2= utf8_encode($archivo2); y ya esta no?

Pues va a ser que no, me da un error de Call to undefined function: utf8_encode()

arrrrrrrgggg ya no se que hacer, a alguien se le ocurre como arreglar esto?
  #2 (permalink)  
Antiguo 06/07/2006, 07:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Para poder usar las funciones utf8_xxxx() necesitas tener instalado las extensiones de XML a PHP.

Si usas windows .. habilita: php_xml.dll en tu php.ini .. si usas Linux tendrás que intalarla como corresponda .. y si usas un servicio de hosting tendrás que consultar con tu proveedor para que te la instalen.

más info:
www.php.net/xml

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 06/07/2006, 07:15
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
Vale!!!

Y si no puedo instalar las extensiones, hay alguna otra solucion?
  #4 (permalink)  
Antiguo 06/07/2006, 07:19
 
Fecha de Ingreso: julio-2006
Mensajes: 10
Antigüedad: 11 años, 5 meses
Puntos: 0
Depende de los cambios que te haga en el texto imagino, yo siempre lo he areglado con utf8_encode / decode pero paraalgunso cambios tal vez puedas usar un str_replace
  #5 (permalink)  
Antiguo 06/07/2006, 08:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Dsandar
Vale!!!

Y si no puedo instalar las extensiones, hay alguna otra solucion?
Cambiate de proveedor xD

En serio .. el soporte XML en general no sólo sirve para usar esa función que a tí te hace falta .. luego querras hacer algún lector de RSS por ejemplo o cosas similares y no podras .. creo que es hora de "plantearselo".

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 06/07/2006, 10:30
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
Pues ya he puesto lo de la extensión xml y ya no me da error, pero lo que se solucionaba cambiando la etiqueta charset=utf-8 no funciona con el utf8_encode($archivo); que me lo deja todo igual ni con utf8_decode($archivo2); que me pone interrogantes,

Alguna idea?
  #7 (permalink)  
Antiguo 06/07/2006, 10:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si has hecho eso .. entiendo que tienes acceso a la configuración de tu servidor? ..

Si es así .. .. que servidor HTTP usas? Apache? ..

Apache por defecto configura su própio char-set si tu no lo defines en tus scripts PHP ...

En tu httpd.conf, deja el "charset" a ISO-8859-1
AddDefaultCharset ISO-8859-1
# AddDefaultCharset UTF-8

** Por lo menos así solventé en mis servidores un problema similar sin tener que andar usando utf8_xxx() a cada rato o enviando las cabeceras HTTP del "chartset" vía header() (otra solución cuando usas scripts PHP sin incrustrar HTML por médio para definir ese charset)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 06/07/2006, 10:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
je je, la verdad es que no tengo acceso al servidor, lo que hecho es subirlo donde ira alojado que si que tenia puesta esa extensión (eso lo se xq no me da el error), así que todo lo que me has dicho no me sirve en ese caso, ya que no puedo acceder al servidor. Alguna otra idea entonces?

Por otro lado, he intentado activar la extension en mi servidor que es linux mandrake, pero no se como hacerlo ni he encontrado la información por ningún lado. Me puedes ayudar con eso, pasarme algún link donde lo expliquen?

Muchas gracias y saludos
  #9 (permalink)  
Antiguo 06/07/2006, 11:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Vamos a ir concretando un poco más ...

En tu servidor Linux (Mandrake) puedes buscar tu httpd.conf (estará por /etc/httpd .. por lo menos así queda en distribuciones como Fedora que es la que uso ..). Edita el archivo en concreto y fijate como está la directiva que te mencioné .. reinicia tu servidor y observa ..

Si tu en tu servidor -final- (tu servicio de hosting) no tienes forma de cambiar la configuración del mismo sobre su "httpd.conf" .. puedes forzar esa configuración (supongo) a nivel de un .htaccess (no sé como quedaría .. consulta si puedes con tu proveedor si es que lo puedes hacer o visita el foro de "Servidores web" ..).

Por otro lado .. para hacerlo en "código" .. ya vistes que si usas la cabecera HTTP adecuada del "charset" en HTML, el código afectado se trata bien.

Ahora .. el código PHP que te dá problemas no sé como lo usas .. no sé si es un .php con algún "echo" por ahí por médio sin más HTML? .. o qué exactamente. En cualquier caso podrías forzar esa cabecera en PHP vía:

Código PHP:
<?php
header
("Content-type: text/html; charset=ISO-8859-1"); 
?>
Esto sería al principio de tu código PHP ...


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 06/07/2006, 11:20
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 12 años, 9 meses
Puntos: 0
Bueno, en el servidor donde se alojará la web ya debe estar como utf8, xq al final se me ha ocurrido que igual ya estaba puesto así y lo del encode me estaba dando por... y era así :P

Lo he cambiado en mi servidor local y ya lo veo bien tambienl, pero lo que te preguntaba era como activar lo del xml, que no veo como hacerlo.

Muchas gracias por todo, ahora empiezo a entender lo del charset :D
  #11 (permalink)  
Antiguo 06/07/2006, 11:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por cierto .. como veras el "charset" lo tiene "todo":

* Las páginas HTML generadas (controlado por el servidor HTTP "por defecto" si no lo especificas en el HTML)
* PHP (en realidad lo maneja en ese caso la configuración del servidor HTTP).
* BBDD (base de datos) .. también codifican a su manera como guardan y entragan datos .. Ojo también con eso por si acaso te tocas con esa situación.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 06/07/2006, 11:52
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El tema de la instalación de la extensión XML para Linux Mandrake ..

Usa (en línea de comandos) el RPM necesario:
urpmi php-xml

(instala las dependencias que te pida .. librerías y demás ..)

(creo que es ese el comando en Mandrake (Mandriva) el cual va a "buscar" tus RPM's en sus repositorios si no lo tienes instalado? .. En Fedora por ejemplo se hace un: yum install php-xml y listo .. busca el comando equivalente para tu distribución de linux o consulta en los foros de Linux)

Reinicia tu servidor (al menos Apache) y verifica haciendo un:
Código PHP:
<?
phpinfo
();
?>
Si quedó bien instalada tu extensión veras un módulo de información al respecto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 06:00.