Re: Mostrar caracteres acentuados en PHP

From: Julio Cesar Sánchez González <knowhow(at)sistemasyconectividad(dot)com(dot)mx>
To: "Damian Culotta" <dculotta(at)fibertel(dot)com(dot)ar>, <lordjose84(at)gmail(dot)com>
Cc: <conrado(at)mapfre(dot)com(dot)ar>, "Ayuda PostgreSql" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Mostrar caracteres acentuados en PHP
Date: 2007-03-18 07:27:58
Message-ID: 000e01c7692e$f3e37250$4201a8c0@geminis
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Tambien puedes modificar el charset de PHP a ISO-8859-1, el de Apache y el de postgres.

Julio C.
----- Original Message -----
From: Damian Culotta
To: lordjose84(at)gmail(dot)com
Cc: conrado(at)mapfre(dot)com(dot)ar ; Ayuda PostgreSql
Sent: Saturday, March 17, 2007 9:48 AM
Subject: Re: [pgsql-es-ayuda] Mostrar caracteres acentuados en PHP

José Manuel Ruiz escribió:
Se me ha ocurrido otra opción para que no salgan los "caracteres raros" cuando pintas un texto que un usuario a escrito y tú almacenas en un campo text en la base de datos.

crea una función en PHP que le pases el texto que ha escrito el usuario y te devuelva el texto en HTML. Utilizando la función de PHP str_replace, puedes crear todas las opciones.

Por ej:

function dame_text_en_html($text)
{

// signos < > en html

$text=str_replace(array("<",">"), array("&lt;","&gt;"),$text);
//tildes en vocales y ñ
$text=str_replace(array("á","é","í","ó","ú","ñ"), array("$aacute;","$eacute;","$iacute;","$oacute;","$uacute;","&ntilde;"),$text);

//devuelve el texto en html
return $text;

}

Una vez tienes el texto en HTML solo tienes que guardarlo en la base de datos y supongo que al pintarlo pasarás todas las validaciones de HTML. Porque incluso el texto que escribe el usuario estará en HTML.

El problema estará cuando el usuario tenga que editar, que tendrás que ponerle el texto tal y como el lo puso. Porque es capaz de llamarte para decirte que tu apli no está funcionando bien. Pero simplemente está viendo código HTML en el editor.

Un saludo.

El día 13/03/07, conrado(at)mapfre(dot)com(dot)ar <conrado(at)mapfre(dot)com(dot)ar > escribió:
Gente, buenos días.
Tengo instalado postgresql en UTF-8. Tengo algunas funciones que devuelven
el tipo de datos text, y en su contenido pueden venir caracteres acentuados.
Probando la funcion desde pgAdminIII, no hubo problemas, pero cuando hago la
llamada a la funcion desde php, me aparecen los famos caracteres 'raros'.
La pregunta es, como hago para saber y cambiar el encoding del cliente para
que pueda mostrar los caracteres acentuados?
Es desde el servidor apache, configuracion de php?

Desde ya, gracias.
Saludos,

---------------------------(fin del mensaje)---------------------------
TIP 4: No hagas 'kill -9' a postmaster

--
"Comparte lo que sabes, aprende lo que no sepas"
Todo por el conocimiento libre

Linux user number 441469
No sólo tenés qeu usar la etiqueta <meta http-equiv="Content-Type" content="text/html; />, sino que podés establecerle el charset (lo cual es más correcto).
En este caso, lo recomendado seria: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 /> o <meta http-equiv="Content-Type" content="text/html; charset=UTF-8 />.

También podés usar el set_client_encodig en Php para ustilizar una codificación en la aplicación y otra en la base de datos.

Tercer detalle, podés forzar a que Apache sirva todas las páginas en una codificación determinada, o hacer que no fuerze ninguna (en cuyo caso los parámetros de tu html serian los que valen).

Espero qeu puedas resolver tu problema con estos tips.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Colina 2007-03-18 13:12:09 Re: Simbolos dentro de cadenas
Previous Message Alvaro Herrera 2007-03-18 00:19:57 Re: Sumar TIMESTAMP + TIME desde el código fuente