Foros del Web » Programando para Internet » PHP »

Problema rarisimo con charset y ñ

Estas en el tema de Problema rarisimo con charset y ñ en el foro de PHP en Foros del Web. Siempre se reniega con esto de los charsets... pero si mantenemos un orden y coherencia en teoria no deberia haber problemas: Guardar todos los archivos ...
  #1 (permalink)  
Antiguo 06/01/2011, 16:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 6 meses
Puntos: 11
Problema rarisimo con charset y ñ

Siempre se reniega con esto de los charsets... pero si mantenemos un orden y coherencia en teoria no deberia haber problemas:

Guardar todos los archivos (htm, php, js, css, etc) como UTF8
Poner el charset en el HTML:
Código:
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
Setear el charset en las cabeceras con PHP:
Código:
header('Content-Type: text/html; charset=UTF-8');
Setear el cotejamiento de las tablas en la BD como UTF8 tambien
A veces es necesario setear MySQL antes desde PHP:
Código:
mysql_query("SET NAMES utf8");
Y siempre es bueno tener a mano las funciones:
utf8_encode() y utf8_decode()

Pero tengo una pagina que no responde a nada de eso, es un HTML puro, sin base de datos, sin javascript, cuando lo veo con extension .html funciona perfecto, pero cuando lo veo con extension .php la "Ñ" se ve como un signo de preguntas.
No se por qué, lo único que se me ocurre es que el PHP esté siendo modificado por Apache y me cambie el charset o algo de eso sino no se por que anda el MISMO archivo pero con extension html...

A alguien le pasó alguna vez o se le ocurre que puede ser?
  #2 (permalink)  
Antiguo 06/01/2011, 16:19
Avatar de Potro  
Fecha de Ingreso: abril-2001
Mensajes: 2.249
Antigüedad: 23 años, 8 meses
Puntos: 39
Respuesta: Problema rarisimo con charset y ñ

Yo tuve ee problema tambien que con ningun tag podia arreglar los acentos o ñ pero me encontre esta funcion la cual arreglo todos mis problemas..



Código PHP:
Ver original
  1. function acentos($cadena)
  2. {
  3.    $search = explode(",","á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,á,é,í,ó,ú,ñ,Ãá,Ãé,Ãí,Ãó,Ãú,Ãñ,Ó,à ,É,à ,Ú,“,†,¿,ü");
  4.    $replace = explode(",","á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,Ó,Á,É,Í,Ú,\",\",¿,&uuml;");
  5.    $cadena= str_replace($search, $replace, $cadena);
  6.  
  7.    return $cadena;
  8. }


Espero te saque de tu apuro...



Saludos,
__________________
Paginación en FLASH,

http://www.forosdelweb.com/f62/pagin...o-aqui-540241/
  #3 (permalink)  
Antiguo 06/01/2011, 16:20
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 14 años
Puntos: 51
Respuesta: Problema rarisimo con charset y ñ

Puedes poner tu código?
  #4 (permalink)  
Antiguo 06/01/2011, 18:28
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 6 meses
Puntos: 11
Respuesta: Problema rarisimo con charset y ñ

mmm no esa funcion tampoco me sirvió, igual es medio extraña porque reemplaza a la ñ con otra ñ segun parece.

El problema esta sin duda en el servidor porque probe el mismo archivo en otro servidor y el php anda bien.

El codigo no tiene nada de raro, es este:

Código PHP:
<?php

header
('Content-Type: text/html; charset=UTF-8');

      function 
acentos($cadena)
      {
         
$search explode(",","á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,á,é,Ã*,ó,ú,ñ,Ãá,Ãé,ÃÃ*,Ãó,Ãú,Ãñ,Ó,à,É,à,Ú,“,†,¿,ü");
     
$replace explode(",","á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,á,é,í,ó,ú,ñ,Á,É,Í,Ó,Ú,Ñ,Ó,Á,É,Í,Ú,\",\",¿,&uuml;");
         
$cadenastr_replace($search$replace$cadena);
         return 
$cadena;
      }


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
    <title>TITULO</title>
</head>
<body>

Diseñado <?php echo acentos("Diseñado") . "  Diseñado"?> 

</body>
</html>

Hay algo en el servidor que mezclado con PHP hacen que no interprete bien el UTF8 pero no se que puede ser.
Probe usar un .htaccess con:
Código:
AddDefaultCharset utf-8
Pero no anduvo tampoco
  #5 (permalink)  
Antiguo 06/01/2011, 18:31
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 14 años
Puntos: 51
Respuesta: Problema rarisimo con charset y ñ

Si le sacás esto:

Código PHP:
Ver original
  1. header('Content-Type: text/html; charset=UTF-8');

y tenés el archivo php guardado como utf-8 tal vez pueda funcionar, es una idea...
  #6 (permalink)  
Antiguo 06/01/2011, 18:36
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 6 meses
Puntos: 11
Respuesta: Problema rarisimo con charset y ñ

Si, ya lo habia probado, tambien quitando el meta del HTML, pero nada.
De todas formas no debería por qué tocar nada, ya que en otro servidor anda bien asi tal cual, y si lo grabo como html y no como php anda bien tambien, por eso no entiendo nada...

Por ahora la solución fue reemplazar los caracteres que salen mal por su codigo HTML, pero es un parche no una solución.

Lo único que se me ocurre es que el Apache tenga un charset por defecto y que no tenga habilitado los permisos para cambiarlo con el .htaccess... pero sería muy trucho.
  #7 (permalink)  
Antiguo 06/01/2011, 18:44
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 14 años
Puntos: 51
Respuesta: Problema rarisimo con charset y ñ

Fijate si en el php.ini no tenés algo así descomentado:

default_charset = "iso-8859-1"
  #8 (permalink)  
Antiguo 06/01/2011, 18:46
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 6 meses
Puntos: 11
Respuesta: Problema rarisimo con charset y ñ

El servidor no lo manejo yo, puedo ver el php.ini igual???
Yo creo que tiene que haber en algun lado algo como:
AddCharset ISO-8859-1 .php

Porque solo el php me da problemas, en HTML anda bien.
  #9 (permalink)  
Antiguo 06/01/2011, 18:53
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 14 años
Puntos: 51
Respuesta: Problema rarisimo con charset y ñ

Prueba con

Código PHP:
Ver original
  1. ini_set('default_charset', 'UTF-8');

pero creo que tiene un bug y no funca muy bien :(
  #10 (permalink)  
Antiguo 06/01/2011, 20:10
 
Fecha de Ingreso: mayo-2005
Mensajes: 284
Antigüedad: 19 años, 6 meses
Puntos: 11
Respuesta: Problema rarisimo con charset y ñ

tampoco funciona :(
para colmo no tengo soporte en el servidor, y entre la ayuda encontré una seccion sobre los charsets y dicen que hay que modificar el .htaccess pero no sirvió...
Bueno por lo menos no voy a usar nunca mas ese servidor.
  #11 (permalink)  
Antiguo 13/03/2013, 04:05
 
Fecha de Ingreso: marzo-2013
Mensajes: 1
Antigüedad: 11 años, 9 meses
Puntos: 0
Respuesta: Problema rarisimo con charset y ñ

Se que le mensaje es bastante antigüo, pero llegue aquí por la misma razón que la del post.
Decir que la función es correcta, con algún pequeño cambio:

- (obviamente los primeros reemplazos son inútiles),
- Hay que cambiar el orden de reemplazos (primero las mayúsculas y luego minúsculas)
- Hay que tener en cuenta que algunos CMS transforma a entidades HTML esos simbolos

Resumiendo, la función queda mejor así:

function acentos($cadena)
{
$search = explode(",","Ãá,Ãé,ÃÃ*,Ãó,Ãú,Ãñ,á,é,Ã*,ó,à º,ñ,Ó,à ,É,à ,Ú,“,†,¿,ü,&Atilde;&Atilde;&iexcl;,&Atilde;&Atilde;&cop y;,&Atilde;&Atilde;­,&Atilde;&Atilde;³,&Atilde;&At ilde;&ordm;,&Atilde;&Atilde;&plusmn;,&Atilde;&iexc l;,&Atilde;&copy;,&Atilde;­,&Atilde;³,&Atilde;&ord m;,&Atilde;&plusmn;,&Atilde;&ldquo;,&Atilde; ,&Atilde;&permil;,&Atilde; ,&Atilde;&scaron;,&acirc;&euro;&oelig;,&acirc;&eur o; ,&Acirc;&iquest;,&uuml;");
$replace = explode(",","Á,É,Í,Ó,Ú,Ñ,á,é,í,ó,ú,ñ,Ó,Á,É,Í,Ú,\", \",¿,&uuml;,Á,É,Í,Ó,Ú,Ñ,á,é,í,ó,ú,ñ,Ó,Á,É,Í,Ú,\",\ ",¿,&uuml;");
$cadena= str_replace($search, $replace, $cadena);

return $cadena;
}
  #12 (permalink)  
Antiguo 13/03/2013, 09:04
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 2 meses
Puntos: 175
Respuesta: Problema rarisimo con charset y ñ

Porque mejor no conviertes tus caracteres a escapes &aacute; y similares ????
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...

Etiquetas: charset
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 01:06.