Foros del Web » Programando para Internet » ASP Clásico »

Función para transformar HTML Entities

Estas en el tema de Función para transformar HTML Entities en el foro de ASP Clásico en Foros del Web. Hola, necesito transformar un texto de UTF-8 a ISO-8859-1, porque mi sistema y mi BD esta todo OK en utf-8 pero al hacer envío de ...
  #1 (permalink)  
Antiguo 11/12/2007, 04:54
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 6 meses
Puntos: 9
Función para transformar HTML Entities

Hola, necesito transformar un texto de UTF-8 a ISO-8859-1, porque mi sistema y mi BD esta todo OK en utf-8 pero al hacer envío de newsletter, los clientes de mail me hacen un desastre con el texto,

así que necesito una función para:

- Pasar texto UTF-8 a ISO-8859-1

o bien

- Convertir caracteres especiales (TODOS los que puedan dar error) a HTML Entities (" etc)

¿Alguien me puede ayudar?

Gracias
  #2 (permalink)  
Antiguo 11/12/2007, 08:08
 
Fecha de Ingreso: agosto-2007
Mensajes: 79
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Función para transformar HTML Entities

Hola, prueba con HTMLEncode, esto te ayudara con los caracteres especiales.

<%
response.write(Server.HTMLEncode("tu_texto_aqui"))
%>

Suerte.
  #3 (permalink)  
Antiguo 11/12/2007, 08:44
Avatar de eberrios  
Fecha de Ingreso: agosto-2004
Ubicación: Chile
Mensajes: 145
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Función para transformar HTML Entities

con este encabezado vasta en el newsletter que envias vasta ;)

response.Charset="ISO-8859-1"
  #4 (permalink)  
Antiguo 11/12/2007, 09:09
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 6 meses
Puntos: 9
Re: Función para transformar HTML Entities

Pues me temo que no funciona ni lo uno ni lo otro...

HTMLEncode funciona mal con UTF-8 (ver esto), mi sistema, que lleva 3 meses de desarrollo está en UTF-8, ahora quiero incluir algunos textos en el newsletter, cuya versión html se abre sin problemas en todos los navegadores, pero al enviarla por correo, los servidores de mail (o los clientes, o quien sea que meta mano en el camino) me destrozan los caracteres especiales, y llamamos "especiales" a todos aquellos que no forman parte del reducido alfabeto anglo-sajón,

me da igual poner charset=utf-8 o charset=iso-8859-1, y eso que antes he transformado a mano todos esos caracteres, al final me he hecho esta función:

Código:
    Function quitaEntities(texto)
            texto = Replace(texto, "¡", "&iexcl;")
            texto = Replace(texto, "¿", "&iquest;") '<- Esta no funciona

            texto = Replace(texto, "á", "&aacute;")
            texto = Replace(texto, "é", "&eacute;")
            texto = Replace(texto, "í", "&iacute;")
            texto = Replace(texto, "ó", "&oacute;")
            texto = Replace(texto, "ú", "&uacute;")
            texto = Replace(texto, "ñ", "&ntilde;")
            texto = Replace(texto, "Ç", "&ccedil;")

            texto = Replace(texto, "Á", "&Aacute;")
            texto = Replace(texto, "É", "&Eacute;")
            texto = Replace(texto, "Í", "&Iacute;")
            texto = Replace(texto, "Ó", "&Oacute;")
            texto = Replace(texto, "Ú", "&Uacute;")
            texto = Replace(texto, "Ñ", "&Ntilde;")
            texto = Replace(texto, "Ç", "&Ccedil;")

            texto = Replace(texto, "à", "&agrave;")
            texto = Replace(texto, "è", "&egrave;")
            texto = Replace(texto, "ì", "&igrave;")
            texto = Replace(texto, "ò", "&ograve;")
            texto = Replace(texto, "ù", "&ugrave;")

            texto = Replace(texto, "À", "&Agrave;")
            texto = Replace(texto, "È", "&Egrave;")
            texto = Replace(texto, "Ì", "&Igrave;")
            texto = Replace(texto, "Ò", "&Ograve;")
            texto = Replace(texto, "Ù", "&Ugrave;")

            texto = Replace(texto, "ä", "&auml;")
            texto = Replace(texto, "ë", "&euml;")
            texto = Replace(texto, "ï", "&iuml;")
            texto = Replace(texto, "ö", "&ouml;")
            texto = Replace(texto, "ü", "&uuml;")

            texto = Replace(texto, "Ä", "&Auml;")
            texto = Replace(texto, "Ë", "&Euml;")
            texto = Replace(texto, "Ï", "&Iuml;")
            texto = Replace(texto, "Ö", "&Ouml;")
            texto = Replace(texto, "Ü", "&Uuml;")

            texto = Replace(texto, "â", "&acirc;")
            texto = Replace(texto, "ê", "&ecirc;")
            texto = Replace(texto, "î", "&icirc;")
            texto = Replace(texto, "ô", "&ocirc;")
            texto = Replace(texto, "û", "&ucirc;")

            texto = Replace(texto, "Â", "&Acirc;")
            texto = Replace(texto, "Ê", "&Ecirc;")
            texto = Replace(texto, "Î", "&Icirc;")
            texto = Replace(texto, "Ô", "&Ocirc;")
            texto = Replace(texto, "Û", "&Ucirc;")

        quitaEntities = texto
    End Function
Problemas: esta no me funciona: texto = Replace(texto, "¿", "&iquest;"), y no puedo reemaplzar las comillas (") ni el ampersand (&) porque puede haber links u otro código html dentro del contenido (aunque eso ya lo solucioné parseando el taxto a la hora de guardar los datos)

O sea, que todo el texto que guardo en mi BD tengo que pre-procesarlo con funciones propias, ¿que pasaría si mi BD fuera multi-entorno? Pues que los clientes que no fueran web no verían una m****...

Al final, ni utf-8 ni nada, los caracteres "especiales" se interpretan de manera diferente en la BD, en el servidor web, en el navegador y ahora resulta que también en los mails. En javascript ya he renunciado a usar tildes, eñes e interrogantes de apertura, porque a veces las muestra y a veces no , para esto no he encontrado solución y he encontrado más gente con el problema, así que al menos sé que no soy el único

Así que hasta que a los desarrolladores de estandars les de por acordarse de que existe un mundo de alfabetos no anglosajones y comprueben lo difícil que es trabajar en diferentes entornos con estos, creo que tendremos que apañarnos con este sistema infernal

¿¿¿Se nota que estoy harto de la codificación??? Lo siento, pero llevo con este problema desde que comenzó el proyecto y niguna solución resulta ser 100% válida, siampre acabo encontrando algún nuevo problema

Saludos
  #5 (permalink)  
Antiguo 11/12/2007, 09:25
Avatar de eberrios  
Fecha de Ingreso: agosto-2004
Ubicación: Chile
Mensajes: 145
Antigüedad: 19 años, 10 meses
Puntos: 1
Re: Función para transformar HTML Entities

en vez de buscar el cartacter como caracter busca su codigo ascii con chr(xx) (creoq que esa es la sentencia) y me cuentas
  #6 (permalink)  
Antiguo 11/12/2007, 09:37
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 6 meses
Puntos: 9
Re: Función para transformar HTML Entities

Ya funcionó el texto = Replace(texto, "¿", "&iquest;")...

Había subido al servidor una versión incompleta de la función

Gracias
  #7 (permalink)  
Antiguo 21/12/2007, 22:46
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 16 años, 5 meses
Puntos: 0
Exclamación Re: Función para transformar HTML Entities

Necesito convertir caracteres chinos desde un formulario, y guardarlos como NCR (por ejemplo: & #20126;& #27954;& #20195;& #34920) para dejarlos en una base de datos usando PHP. Probé con htmlentities y utf8_encode y utf8_decode pero parece no funcionar.

Pueden ver lo que estaba tratando de conseguir en la direccion, presionando el boton result:
http://www.redminera.com/modules/news/html/chino.php

Les agradecería infinitamente vuestra ayuda.
Muchas gracias.
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 23:03.