utf8_decode simbolo de euro €

4,993 views
Skip to first unread message

alberto diez

unread,
Apr 14, 2011, 2:18:12 PM4/14/11
to Grupo de programadores PHP de Barcelona
Hola grupo.

Tengo esta función:

public function limpiar_variable($var){
$var = str_replace("'", '', $var);
$var = str_replace('"', '', $var);
$var = str_replace('>', '', $var);
$var = str_replace('<', '', $var);
$var = utf8_decode($var);

return $var;
}

Al hacer el utf8_decode me convierte el simbolo de € en una "?".

He probado con el iconv e incluso reemplazando el caracter (o
intentandolo) por un "& # 8 3 6 4" (sin espacios). Pero imposible...no
consigo que me lo guarde en la base de datos con un €.

Y tengo que hacerle el utf8_decode de todas todas porque es un sistema
ya hecho..

Algo de luz??

Víctor González

unread,
Apr 15, 2011, 3:56:31 AM4/15/11
to phpbar...@googlegroups.com
Por probar... has probado &euro;

?

2011/4/14 alberto diez <alberto...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "Grupo de programadores PHP de Barcelona" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a phpbar...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a phpbarcelona...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/phpbarcelona?hl=es.


César Escribano

unread,
Apr 15, 2011, 3:57:41 AM4/15/11
to phpbar...@googlegroups.com, alberto diez
utf8_decode convierte a ISO-8859-1, pero el carácter del euro no existe en ese encoding, se introdujo en ISO-8859-15

prueba con:

mb_convert_encoding ($cadena, 'ISO-8859-15', 'UTF-8')


saludos


2011/4/14 alberto diez <alberto...@gmail.com>

Ricard Clau

unread,
Apr 15, 2011, 6:19:42 AM4/15/11
to phpbar...@googlegroups.com, César Escribano, alberto diez
César tiene razón, el problema es que el símbolo del € no está en ISO-8859-1

Si tienes las tablas en esa codificación, es posible que nada te funcione, una "solución" sería (si tienes la extensión iconv habilitada):

iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $cadena)

Con esto del TRANSLIT, intenta buscar una representación parecida a lo que necesitas, y en el caso de €, lo convierte a las 3 letras 'EUR', a veces no hay más remedio que hacer estas chapucillas

Suerte! :D

warper

unread,
Apr 15, 2011, 4:01:38 AM4/15/11
to phpbar...@googlegroups.com
�Has probado con &eur; ("& e u r ;")?

Aparte de eso, �no sera que lo estas visualizando con el phpmyadmin en
una pagina de codigos distinta y por eso lo ves mal? �Has probado de
consultar ese valor y sacarlo en algun script despues de insertarlo en
la base de datos? (quizas si que recupera el euro a pesar que en el
phpmyadmin, o lo que sea que uses para visualizarlo, te lo muestre como
"?").

Saludos
warper


El 14/04/11 20:18, alberto diez escribi�:
> Hola grupo.
>
> Tengo esta funci�n:


>
> public function limpiar_variable($var){
> $var = str_replace("'", '', $var);
> $var = str_replace('"', '', $var);
> $var = str_replace('>', '', $var);
> $var = str_replace('<', '', $var);
> $var = utf8_decode($var);
>
> return $var;
> }
>

> Al hacer el utf8_decode me convierte el simbolo de � en una "?".


>
> He probado con el iconv e incluso reemplazando el caracter (o
> intentandolo) por un "& # 8 3 6 4" (sin espacios). Pero imposible...no

> consigo que me lo guarde en la base de datos con un �.

Juan Armando Nieto Pérez

unread,
May 15, 2013, 3:01:01 PM5/15/13
to phpbar...@googlegroups.com
Lo que yo aplique fue

str_replace(chr(128),"&euro;","€123.20")

Espero les funcione

mpgprofe

unread,
Mar 30, 2014, 4:25:38 PM3/30/14
to phpbar...@googlegroups.com
Muchas gracias.
Elegante solución, funciona estupendamente.
Reply all
Reply to author
Forward
0 new messages