Foros del Web » Programando para Internet » Javascript »

Mostrar caracteres especiales con Javascript

Estas en el tema de Mostrar caracteres especiales con Javascript en el foro de Javascript en Foros del Web. Hola, Mi duda es la siguiente, ¿Como puedo hacer para mostrar correctamente caractares especiales con javascript en funciones como alert o confirm? Ya sean vocales ...
  #1 (permalink)  
Antiguo 25/01/2012, 02:42
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 17
Pregunta Mostrar caracteres especiales con Javascript

Hola,

Mi duda es la siguiente, ¿Como puedo hacer para mostrar correctamente caractares especiales con javascript en funciones como alert o confirm?

Ya sean vocales con acento (á É), ñ ($ntilde), o caractares concretos como comillas simple, doble o interrogante de apertura (', " o &quote, ¿).

Si lanzo directamente el codigo asi, no se interpreta y se lanza escrito asi (en codigo y no en el caracter que le corresponde).

Si lo pongo tal cual, cuando incluyo comillas, el atributo se rompe por culpa de las comillas y me da problema.

Lo que me interesa especialmente es saber como expresar las comillas simple. Conozco los metodos de escape de caracteres (\) pero esto me viene dando un problema que no he podido solucionar, ni nadie de la comunidad parece saber encontrarle solucion tampoco (podeis ver el hilo con el problema aqui). Por lo tanto si alguien conoce una forma alternativa a la tradicional de expresar estos caracteres en un alert/confirm le agradecere que la comparta con la comunidad.

Un saludo.
  #2 (permalink)  
Antiguo 25/01/2012, 06:05
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Mostrar caracteres especiales con Javascript

buenas,
he estado leyendo ambos temas y me parece curioso el asunto que tienes de la comilla simple. pues según la documentación, addslashes escapa ciertos caracteres incluyendo la comilla simple. en todo caso, hay ciertos caracteres que por más que quieras mostrarlo en su forma pura, en ciertas circunstancias debes neutralizarlo. el ejemplo más conocido, conflico de comillas. al menos en javascript, los caracteres tienen distintas formas de representarse: la forma original y común, el escape habitual, en hexadecimal, y en unicode. estos últimos dos simplemente consiste en una secuencia de \xHH o \uHHHH. respecto a addslashes, se me hace la idea que posiblemente hay algún detalle que has ignorado.

un detalle adicional respecto a las entidades no interpretadas. he estado haciendo algunas pruebas y resulta que la interpretación de las entidades estan condicionadas al menos por dos factores: el origen del código y el tipo de documento. en cuanto a origen, las entidades solamente se interpretan si éste esta explicitamente integrado en el documento html. es decir, en un archivo externo *.js no va a funcionar. por tanto, los únicos dos lugares generales para integrar javascript es en el elemento <script> y en los atributos. acerca del tipo de documento, específicamente me refiero al DTD html o xhtml. resulta que dependiendo del DTD, las entidades son admisible o no en la etiqueta <script>... pero no afecta los atributos indistintamente del DTD. por supuesto, al hacer distinción en los DTDs, se asume que también se debe cargar correctamente el documento para que el navegador lo interprete como tal. el siguiente código muestra distintos resultados al inicio, pero los botones producen el mismo resultado. comprobado en firefox y chrome.


Código:
#xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<script type="text/javascript">
alert("&amp;apos; -&gt; &apos;");
</script></head>
<body><input type="button" value="click" onclick="alert('&lt;&gt;');" />
<input type="button" value="error" onclick="alert('&apos;');" /></body>
</html>
Código:
#html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<script type="text/javascript">
alert("&amp;apos; -&gt; &apos;");
</script>
</head>
<body><input type="button" value="click" onclick="alert('&lt;&gt;');">
<input type="button" value="error" onclick="alert('&apos;');">
</body></html>
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 25/01/2012 a las 06:25
  #3 (permalink)  
Antiguo 26/01/2012, 02:38
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 17
Respuesta: Mostrar caracteres especiales con Javascript

Gracias por responder,

Experimentare un poco mas con los doctype a ver si puedo sacar algo util para lo que necesito, aunque estube provando los ejemplo que me indicaste y ciertamente van bien los alert de los botones (para los < >) para la comilla o bien la devuelve el mensaje como hexadecimal o directamente ni sale.

Tengo la opcion de remplazarla por una comilla doble que no me da problemas, y por ahora me sirve para "salvar el asunto", pero la verdad esque aun asi me gustaria descubrir la forma de hacer esto, sin ir mas lejo, cualquier foro como este permite añadir lo que queramos en el texto y lo muestra sin alterar:

Ya ponga "pepe" 'pepe' &pepe& <pepe> "pepe' `pepe` ´pepe´ pépé.

Me gustaria poder conseguir esto mismo, mostrar los mensajes tal cual lo escribe el usuario sin tener que alterarlo (y que no afecte intrusivamente en la estructura).

Seguire trabajando el asunto, y si descubro algo lo compartire con la comunidad.

Un saludo y de nuevo gracias a zerokilled por su tiempo.

Etiquetas: caracteres, especiales, funcion
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:45.