Caracteres impresos mal ! (solved)

Iniciado por Diabliyo, 26 Octubre 2012, 16:46 PM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Buenas...

Tengo un software persona (CMS) que pongo en cualquier sitio que monto, siempre me funciona sin problema alguno y cada vez que lo mejoro actualizo todos mis sitios...

En fin... ayer estuve montando una pagina personal y después de terminar de instalar mi CMS y montar mi template, hice la primer publicación y note que los acentos no se imprimían bien, se imprime: ó en vez de la letra acentuada "o".

Primero pense que fue por alguna mala actualizacion que hice a mi codigo.. asi que elimine todo, me serciore de subir al FTP los archivos correctos (actualizados), instale de nuevo y publique un post. Y el mismo error :S.

Esto ya me tiene todo confundido y estresado, necesito que alguien mas lo observe y tal vez me haga ver el error que tengo :S...

El sitio web es ESTE.

Pablo Videla

Tienes el charset utf-8 en tu web, cambialo a Charset iso-8859-1

y nos cuentas...

para mas informacion.

https://www.google.cl/search?q=charset+iso&oq=charset+is&sugexp=chrome,mod=0&sourceid=chrome&ie=UTF-8


Citar<meta http-equiv="Content-Type" content= "text/html; charset=UTF-8"

cambialo por lo que te dije.

WarGhost

También revisa en que estén guardados los ficheros, puede ser que hicieras algun cambio y modificaste su formato.
¿Qué culpa tengo yo de tener la sangre roja y el corazón a la izquierda?

Diabliyo

#3
Cita de: DonVidela en 26 Octubre 2012, 16:49 PM
Tienes el charset utf-8 en tu web, cambialo a Charset iso-8859-1

y nos cuentas...

para mas informacion.

https://www.google.cl/search?q=charset+iso&oq=charset+is&sugexp=chrome,mod=0&sourceid=chrome&ie=UTF-8


cambialo por lo que te dije.

Buenas....

Gracias por tus comentarios, ya lo cambie y sigue igual, si quieres entra al sitio que mencione anteriormente y veras que esta cambiado el charset...

En mis otros sitios siempre uso UTF-8 y jamas me habia pasado, solo en este nuevo server donde tengo el sitio :S.

Checa ESTA OTRA WEB y veras que los acentos aparecen y el charset es UTF-8 !..... OJO: es la web de un cliente con mi CMS corriendo.

Esto es lo que me confunde :S, ya que en otro servidor si corre bien, pero en el nuevo server no :S.

Ya me serciore que tanto el php.ini como el httpd.conf esten puestos a UTF-8 por Default..

Espero puedas darme algo de entendimiento con esto que te comente...

Cita de: WarGhost en 26 Octubre 2012, 17:06 PM
También revisa en que estén guardados los ficheros, puede ser que hicieras algun cambio y modificaste su formato.

La forma de guardar los datos, es asi:

Código (php) [Seleccionar]

<?php
function proteger_cadena($m)
     {
     return 
htmlentities$mENT_QUOTES);
     }

/* condicionales y variables... */
$tarma= array(
"id"=>"'"$idauto"'"
"mensaje_post"=>"'"proteger_cadena($_POST["mensaje"]). "'"
"titulo_post"=>"'"proteger_cadena($_POST["titulo"]). "'" 
);

insertar_bdd("TABLA_POSTINGS"$trama ); // guardo en la bdd
?>


Y la forma en como lo imprimo es:

Código (php) [Seleccionar]
<?php
function desproteger_cadena($out)
     {
     
$outhtml_entity_decode$outENT_QUOTES );

     if( 
strchr$out"<" ) )
          
$outstr_replace"<"htmlentities("<"ENT_QUOTES), $out );
     if( 
strchr$out">" ) )
          
$outstr_replace">"htmlentities(">"ENT_QUOTES), $out );

     if( 
strchr$out"\n" ) )
          
$outstr_replace"\n""<br>"$out );
     if( 
strchr$out"\t" ) )
          
$outstr_replace"\t""&nbsp;&nbsp;&nbsp;"$out );

     return 
utf8_encodestr_replace("|","/",$out) );
     }

$consconsulta_bdd"TABLA"$argumentos ); // consulto
$bmysql_fetch_array($cons);
// $b["mensaje_post"] -> es el mensaje guardado

echo 'Mensaje: <br>'desproteger_cadena($b["mensaje_post"]);
?>





Otro dato...

Cheque MySQL y el charset en como guarda es: utf8_general_cl

Asumo que mi CMS no es el problema ya que el mismo codigo que tengo arriba, es el que tengo corriendo en mi localhost y los caracteres se imprimen bien, el charset es UTF-8, tambien UTF-8 Default en mi php y apache.

Saludos !

dimitrix

Cita de: WarGhost en 26 Octubre 2012, 17:06 PM
También revisa en que estén guardados los ficheros, puede ser que hicieras algun cambio y modificaste su formato.

Cierto, suele pasar mucho... bendito Notepad, el mejor programa para cambiar el formato cuando pasa esto.




Diabliyo

Cita de: dimitrix en 27 Octubre 2012, 05:25 AM
Cierto, suele pasar mucho... bendito Notepad, el mejor programa para cambiar el formato cuando pasa esto.

Tu respuesta no ayuda....

~ Yoya ~

Asegúrate de guardar los archivos como UTF-8.

Yo creo que se cual es tu problema, estas aplicando la función htmlentities y hay es donde radica el problema.
Cita de: php.net
Al igual que htmlspecialchars(), htmlentities() toma un tercer argumento opcional encoding el cual define la codificación usada en la conversión. Si se omite, el valor por defecto para este argumento es ISO-8859-1 en versiones de PHP anteriores a 5.4.0, y es UTF-8 desde PHP 5.4.0 en adelante. Aunque este argumento es técnicamente opcional, es altamente recomendable especificar el valor correcto para el código.

Info de tu servidor:
Server:Apache/2.2.3 (CentOS)
X-Powered-By:PHP/5.3.3


Osea, tus documentos están en UTF-8 pero estas utilizando datos con un juego de carácter diferente.

A si que agrégale a todos los archivos que utilizes htmlentities, el tercer argumento indicando la codificacion.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

dimitrix

CitarTu respuesta no ayuda....

Eso será por que no tienes los conocimientos suficientes para usar el block de notas.

Siempre que me da ese problema lo arreglo con el block de nota.




Diabliyo

Cita de: dimitrix en 29 Octubre 2012, 00:48 AM
Eso será por que no tienes los conocimientos suficientes para usar el block de notas.

Siempre que me da ese problema lo arreglo con el block de nota.

Jajajaja wow, entonces usando el "block de notas" te vuelves todo un crack :P...
:'( me haz echo el dia amigo :D jajajaja


Cita de: ~ Yoya ~ en 29 Octubre 2012, 00:20 AM
Asegúrate de guardar los archivos como UTF-8.

Yo creo que se cual es tu problema, estas aplicando la función htmlentities y hay es donde radica el problema.
Info de tu servidor:
Server:Apache/2.2.3 (CentOS)
X-Powered-By:PHP/5.3.3


Osea, tus documentos están en UTF-8 pero estas utilizando datos con un juego de carácter diferente.

A si que agrégale a todos los archivos que utilizes htmlentities, el tercer argumento indicando la codificacion.

Saludos.

Fuiste mi salvador amigo....

Fijate que ciertamente, hace pocos días actualice la versión de mi PHP por razones personales y no sabia que la versión 5.3.3 entra en las versiones que "exigen" establecer la codificación dentro de la función "htmlentities"...

He agregado el argumento "UTF-8" en todos mis htmlentities y los html_decode....

Gracias men por tus comentarios... eres un crack ;)

Saludos !

dimitrix

Para una solución más limpia y no tener que usar el utf8_decode cada dos por tres, es mejor dar el formato correcto el fichero, sino luego pasa lo que pasa...

Y como dije con el block de notas sobra, como me acaba de pasar, pongo un ejemplo de como arreglarlo sin tener que sar utf8_encode ni htmlentities, etc...



Y sí, además de ser un experto en el bloc de notas, también lo soy en el paint xD