Foros del Web » Programando para Internet » Javascript »

Caracteres especiales en Javascript

Estas en el tema de Caracteres especiales en Javascript en el foro de Javascript en Foros del Web. Hola! Tengo un problema y es que cuando escribo acentos o interrogaciones en javascript no se ven bien. Tengo una funcion javascript con pregunta, escribo ...
  #1 (permalink)  
Antiguo 15/05/2007, 07:21
 
Fecha de Ingreso: abril-2007
Mensajes: 33
Antigüedad: 17 años, 7 meses
Puntos: 0
Exclamación Caracteres especiales en Javascript

Hola!

Tengo un problema y es que cuando escribo acentos o interrogaciones en javascript no se ven bien.
Tengo una funcion javascript con pregunta, escribo la línea de código:
Código:
	if(confirm('¿Desea realmente eliminar el día seleccionado?')) {
pero aparecen símbolos en el interrogante ¿ y en el acento de día.

Alguien me puede decir como puedo escribirlos para que aparezcan correctamente.

Saludos
  #2 (permalink)  
Antiguo 15/05/2007, 09:05
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Caracteres especiales en Javascript

Creo que eso depende de la configuración de caracteres de tu ordenador/navegador. En Unicode (UTF-8) a mí me salen símbolos, pero en ISO-8859-1 ya no.

Hay muchas codificaciones de caracteres, dependerá de cada usuario, y de su localización en el planeta.

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 11/06/2007, 12:44
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Pregunta Re: Caracteres especiales en Javascript

Hola! cómo van andando??

Llego hasta acá, buscando a través de la interné y de los foros justamente esto... cómo mostrar los caracteres especiales dentro de un script de js??, en php uso htmlentities(la variable con acentos y eñes por ejemplo) y esta función devuelve la variable codificada para html y los estándares... existe algo similar en javascript??

desde ya muchas gracias,
chapulín
__________________
chapu
  #4 (permalink)  
Antiguo 12/06/2007, 12:20
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Información Re: Caracteres especiales en Javascript

Alguna idea gente??! ayudaaa

Por ahí he seguido leyendo y me he topado con los llamados caracteres ascii... y un par de funciones tales como escape() y su inversa: unescape()... pero creo que laburan con caracteres ascii decimales o algo por el estilo y no es la idea...

lo que estoy buscando concretamente es una función en javascript que tome una cadena con acentos y eñes y esas cosillas y devuelva esa cadena codificada para html, supongamos:

htmlificar("Ñoquis habría que comer..."),
y que tire:

Ñoquis habría que comer...

¿se entiende la idea?, ¿existe en javascript?, ¿habría que fabricarla caseramente?... La onda es respetar los estándares y lograr que todo el mundo pueda ver bien los caracteres...

chapulín
  #5 (permalink)  
Antiguo 12/06/2007, 15:03
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Caracteres especiales en Javascript

Que yo sepa no existe la función para esos caracteres, pero sí que se puede crear una fácilmente, un par de replaces y listo!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #6 (permalink)  
Antiguo 12/06/2007, 17:20
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Caracteres especiales en Javascript

Hola derkenuke, gracias por responder!! ,

Qué lástima que no exista dicha función... No me parece que sean un par de replaces, son como 15 (acentos en minúscula, mayúsculas, ñ, diéresis)... que tampoco es guauuu, pero hubiese estado cómodo tener al alcance una función que lo hiciera... (como dije más arriba en php existe y es htmlentities y labura así: htmlentities("á") --> á)

De todas formas, seguí persiguiendo alguna solución y me topé con una alternativa (que tiene que ver con el código ascii)...

Para el problema de dandreta:

Código:
if(confirm('¿Desea realmente eliminar el día seleccionado?')) {
en el que no se veían bien los caracteres para algunas codificaciones de "¿" y "í", se puede hacer lo siguiente:

Código:
if(confirm(String.fromCharCode(191)+"Desea realmente eliminar el d"+String.fromCharCode(237)+"a seleccionado?")) {
La solución la encontré por acá:
http://www.webestilo.com/foros/mensa...o=11&msg=44142


No entiendo mucho de caracteres ascii (no he trabajado nunca con ellos en internet), pero calculo que esto servirá para todas las codificaciones y no habrá problemas... cualquier cosa, corríjanme!!!
  #7 (permalink)  
Antiguo 12/06/2007, 23:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Re: Caracteres especiales en Javascript

Hola:

Para saber como obtener los códigos ascii no era necesario ir a foros de otras webs, teniendo unas FAQs tan completas aquí: Como obtener el código de una letra (ASCII).

Y si se quiere ver bien la página, a mi me gusta usar esta "meta":

Código:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 13/06/2007, 14:08
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Caracteres especiales en Javascript

Qué tal caricatos??!

Viejo, no fue que buscando por ascii llegamos a otro lado... fue que buscando la solución al problema planteado llegamos a otro lado... je

El problema era que no sabíamos que con ascii se podía solucionar nuestro problema... Es decir, no es que no hayamos buscado respuestas previas o posts de por aquí...
El asunto, en mi caso particular, es que lo que yo quería era mostrar esos caracteres especiales en html del tipo &aacute;, pero bueno, no se podía, entonces fue que di con aquello del ascii.

Gracias por estar caricatos!!, y aprovecho y te pregunto y pregunto a los demás foreros que pasen por aquí si no se les ocurre otra forma diferente de mostrar estos caracteres que no sea con ascii... un desafío!! un desafío?

un saludo,
chapulín
  #9 (permalink)  
Antiguo 13/06/2007, 23:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Re: Caracteres especiales en Javascript

Hola:

A partir de las parejas de entidades(caracter/codificación) se puede usar un sencillo script:

Código:
<html>
<head>
<title>
	htmlentities
</title>
<script type="text/javascript">
function parejas(char, code){
 this.char = char;
 this.code = code;
}
var pares = new Array();
pares[0] = new parejas("€", "&euro;");
pares[1] = new parejas("á", "&aacute;");

function htmlentities(txt) {
for (var i = 0, total = pares.length; i < total; i ++)
 txt = txt.replace(new RegExp(pares[i].char, "g"), pares[i].code)
 return txt;
}
</script>
</head>
<body >
<form action="javascript: alert(htmlentities(document.forms[0].tex.value))" >
<textarea name="tex" ></textarea>
<button type="submit" >traducir</button>
</form>
</body>
</html>
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #10 (permalink)  
Antiguo 14/06/2007, 11:24
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Caracteres especiales en Javascript

holas caricatos, qué tal vamos??

muchas gracias por compartir tu código , lo probé... pero no funciona... ;-(

Suponete que en el textarea pongo:

Código:
Habrá que pagar €56!
La salida (alert) que me tira es:

Código:
Habr&aacute; que pagar &euro;56!
Y la idea es que tire un: "Habrá que pagar €56!" (pero respetando los estándares que te llaman la atención con los caracteres especiales y recomiendan el uso de &blabla;... cosa de leer á, pero en el código fuente &aacute;...)
__________________
chapu

Última edición por chapu; 14/06/2007 a las 11:26 Razón: redacción emoticonitiva... je
  #11 (permalink)  
Antiguo 14/06/2007, 12:19
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Caracteres especiales en Javascript

Hombre, funcionar funciona, pero sólo para los elementos HTML, para ventanas modales no sé cual sería la solución definitiva. Supongo que con lo que posteaste ya valdrá. Reitero que depende de la configuración del charset de cada navegador, yo, por ejemplo, no veo las páginas asiáticas en un ordenador sin instalar esas fuentes ni seleccionar un charset que las contemple.

Código PHP:
<html>
<
head>
<
title>
    
htmlentities
</title>
<
script type="text/javascript">
function 
parejas(charcode){
 
this.char char;
 
this.code code;
}
var 
pares = new Array();
pares[0] = new parejas("€""&euro;");
pares[1] = new parejas("á""&aacute;");

function 
htmlentities(txt) {
for (var 
0total pares.lengthtotal++)
 
txt txt.replace(new RegExp(pares[i].char"g"), pares[i].code)
 return 
txt;
}

function 
ponEnDIV() { 
document.getElementById('capa').innerHTML = (htmlentities(document.forms[0].tex.value));  
}
</script>
</head>
<body >
<form action="javascript: ponEnDIV()" >
    <textarea name="tex" >Habrá que pagar €56!</textarea>
    <button type="submit" >traducir</button>
</form>

<div id="capa"></div>

</body>
</html> 
Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #12 (permalink)  
Antiguo 14/06/2007, 12:59
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Caracteres especiales en Javascript

derkenuke, qué tal viejo?!!

sí, con funcionar me refería a que no funciona en el sentido de que no muestra lo que se pretendía... No era una "crítica por criticar" como le llaman, que no se entienda así por favoooor, estamos para aprender unos de otros!! ,

toda esta historia por el asunto de los estánderes... que dá un par de dolores de cabeza, es verdad, pero que tiene su sentido...

porque es que si yo miro el código que vos aportás derkenuke, y me paro en firefox y pongo:
ver codificación de caracteres Unicode(UTF-8),
no reconoce dichos caracteres especiales... y larga unos "?" allí donde el acento y el euro... entonces, la movida es evitar esto...

(el script me sirvió para entender lo de las capas, los divs que leo mucho por ahí pero no entendía bien cómo funcionaban y las utilidades que se le pueden sacar... joya!!!)

muchísimas gracias por todos los aportes y ayudas, es excelente esta forma de aprender a programar... y espero este tema que hemos desarrollado les haya servido como a mí me sirvió... y quizás a veces se malinterpretan cosas y a veces cuesta hacerse entender, porque es q un emoticon no es igual a nuestra caripela... pero por eso entonces hay tratar de ser bien claros... jeje, MUCHÍSIMAS GRACIAS MUCHACHOS Y SERÁ QUE NOS ENCONTREMOS EN ALGÚN OTRO POST!!!
__________________
chapu
  #13 (permalink)  
Antiguo 15/06/2007, 00:45
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
Re: Caracteres especiales en Javascript

loading.............


Firefox tiene la propiedad charset.

<script type="text/javascript" src="bla.js" charset="utf-8"></script>


connection closed.
__________________

Maborak Technologies
  #14 (permalink)  
Antiguo 15/06/2007, 10:00
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Caracteres especiales en Javascript

[connection it seems to be opening... we're not sure!! Caution!!!...3...2...1...]

MaBoRaK, vieja, cómo estamos??, joya que te arrimes al tema!

Qué bueno saber que se le puede enchufar un charset ahí mismo en la etiqueta del script... Ahora bien, lo probé pero no funciona bien, sigue tirando los "?"... igual es muy probable (yo diría en un 102% que en algo estoy metiendo la pata, como es mi bendita costumbre!!)

Dejo el código que estoy probando para que me marquen el error:

Código HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>
    htmlentities
</title>
<!--<script type="text/javascript">-->
<script type="text/javascript" charset="utf-8">
function parejas(char, code){
 this.char = char;
 this.code = code;
}
var pares = new Array();
pares[0] = new parejas("€", "&euro;");
pares[1] = new parejas("á", "&aacute;");

function htmlentities(txt) {
for (var i = 0, total = pares.length; i < total; i ++)
 txt = txt.replace(new RegExp(pares[i].char, "g"), pares[i].code)
 return txt;
}

function ponEnDIV() { 
document.getElementById('capa').innerHTML = (htmlentities(document.forms[0].tex.value));  
}
</script>
</head>
<body >
<form action="javascript: ponEnDIV()" >
    <textarea name="tex" >Habrá que pagar €56!</textarea>
    <button type="submit" >traducir</button>
</form>

<div id="capa"></div>

</body>
</html> 
...es como una mescolanza del ISO-8859-1 y el UTF-8... por ahí debe ir el asunto...
Es que el empeño está puesto en que se vean los caracteres especiales con codificaciones diferentes... aunque no sean todas, reducir la cantidad de casos en que no se ven bien...

¿qué opinan?, ¿por dónde irá el problema?!
__________________
chapu
  #15 (permalink)  
Antiguo 15/06/2007, 10:16
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
Re: Caracteres especiales en Javascript

loading..............


como vas :D ... tu archivo.js está en codificación utf-8 ?
Y fuera de eso poniendo solo


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

debería solucionarse el problema.


connection closed.
__________________

Maborak Technologies
  #16 (permalink)  
Antiguo 15/06/2007, 11:24
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 21 años, 1 mes
Puntos: 45
Re: Caracteres especiales en Javascript

Esto es un quebradero de cabeza e? Resulta que este código
Código PHP:
if(confirm(String.fromCharCode(191)+"Desea realmente eliminar el d"+String.fromCharCode(237)+"a seleccionado?")) 
Me funciona en FF ponga la codificación que ponga. Es decir, para probar el caso inicial me pongo en una codificación china (por poner alguna diferente) y me sale mal la pregunta, con los caracteres mal puestos. Este código me los escribe bien.

He hecho una función para sustituir cada caracter por su código para tener esto de una manera más cómoda, y me encuentro con que cada codificación tiene su número correspondiente para cada caracter. El ? a veces es 32mil y pico, a veces 7mil y pico... Y no me funciona siempre, con algunas codificaciones no da resultado, se ve igual de mal...


Nunca he acabado de entende este tema... Depende del charset con que definamos el documento, del navegador? del sistema operativo? Porque no he llegado a ninguna conclusión.. Yo pensaba que el UTF-8 era capaz de visualizar todo. Mi FF lo tengo en occidental ISO 8859-1, el de toda la vida para las tildes y las eñes... En principio depende del país de cada uno no? Pero habrá una manera de mostrar los caracteres ¿, á y ñ en un ordenador chino no?


En fin, a ver si llegamos a algo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #17 (permalink)  
Antiguo 15/06/2007, 11:49
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
Re: Caracteres especiales en Javascript

loading...............


utf-8 va bien y puedes visualizar todo, solo que los CharCodes son distintos, estuve haciendo validaciones en FARSI y sucede que si copiaba una letra a mano y le sacaba su charcode en TECLADO ESPAÑOL era diferente al teclado FARSI al igual que la codificación... el charcode en utf-8 es diferente al charcode en farsi.

Y eso de mostrar la ñ en ordenador chino es posible si la web tiene cabeceras utf-8.



connection closed.
__________________

Maborak Technologies
  #18 (permalink)  
Antiguo 17/06/2007, 16:07
 
Fecha de Ingreso: mayo-2002
Ubicación: Mendoza ebria y montañosa
Mensajes: 165
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Caracteres especiales en Javascript

¡A FAVOR DEL UNICODE!, jeje

Una muchacha que escribe un tutorial sobre XHTML y que recomienda el uso del unicode (utf-8)... acá el enlace al tutorial en pdf (que aprovecho y recomiendo mucho, está muy claro y es muy agradable de leer...). En el apéndice C es donde ladybenko habla acerca de esta codificación...


(de todas formas está bueno saber que, por ahora (ojo con eso!), no todo el mundo codifica su explorador en unicode y que quienes programan tampoco lo hacen, entonces algunos que tengan otras codificaciones no verán correctamente determinados caracteres... por tanto en HTML hay que usar &pichichu; y en javascript recomiendo String.fromCharCode(191) que tiene en cuenta los ascii para mostrar determinado caracter... Si hay otras alternativas mejores, pongan el grito de aviso en el aire por favooor!!)

Suerte!! ,
chapulín

Última edición por chapu; 17/06/2007 a las 16:08 Razón: no había puesto el enlace al pdf... je
  #19 (permalink)  
Antiguo 11/07/2007, 00:32
Avatar de boqueron1972  
Fecha de Ingreso: julio-2007
Mensajes: 1
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Caracteres especiales en Javascript

Hola:

Yo lo he solucionado llamando al js que contiene el javascript de la siguiente manera...
<script src="archivo.js" type="text/javascript" charset="ISO-8859-1"></script>

Así, puedo escribir acentos sin problemas en el javascript aunque la página esté en UTF8. Me funciona en todos los navegadores modernos...

Espero que os sirva.

Saludos,

Jaime
  #20 (permalink)  
Antiguo 26/10/2007, 09:08
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 10 meses
Puntos: 22
Re: Caracteres especiales en Javascript

Es posible que JavaScript me devuelva &ntilde; cuando yo le envie una ñ ?

SIN utilizar "la fuerza bruta", es decir NO utilizando:

cadena.replace(/ñ/g,'&ntilde;');

Es posible que JS devuelva &ntilde; ?
  #21 (permalink)  
Antiguo 11/07/2008, 06:14
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Caracteres especiales en Javascript

Permitidme que rescate este tema, llevémoslo más allá!

Puesta en escena:
Tengo un formulario generado dinamicamente con javascript (appendChild a hierro) consistente en un área de texto y un botón.

Al pulsar el botón se envía el contenido del textarea a un archivo PHP usando un poco de manteca, digo, AJAX.

Con la siguiente función genero el pseudo-formulario y envío los datos en POST:
Código:
function nuevoM(curso)
	{
	if (document.getElementById('nuevoMensaje')) return;
	var lbl = document.createElement('label');
	lbl.htmlFor = 'nuevoMensaje';
	lbl.appendChild(document.createTextNode('Nuevo registro en el diario:'));
	document.getElementById('Mdiario').appendChild(lbl);
	var txta = document.createElement('textarea');
	txta.id = 'nuevoMensaje';
	txta.rows = 5;
	txta.cols = 80;
	txta.className = 'ancho100';
	document.getElementById('Mdiario').appendChild(txta);
	var btn = document.createElement('input');
	btn.type = 'button';
	btn.value = 'Insertar';
	btn.onclick = function ()
		{
		if (txta.value == '') return;
		txta.value.replace('€', 'EUR');
		var xo = xmlobj();
		xo.open('POST', 'ejecucion/xml_diario.php?id=' + curso);
		xo.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
		xo.onreadystatechange = function()
			{
			if (xo.readyState == 4) if (xo.responseText.substr(0, 5) == 'Error') alert(xo.responseText);
			}
		xo.send('msg=' + txta.value);
		xo.send('msg=' + txta.value);
		cargaDiario(curso);
		cutChilds(document.getElementById('Mdiario'));
		}
	document.getElementById('Mdiario').appendChild(btn);
	}
Todos los archivos están codificados en ANSI, yo únicamente uso EditPlus para estos menesteres, pero los datos los recibo en UTF8, cosas de javascript, firefox y Rita "la Cantaora"

He probado, sin éxito, cambiar el carácter € antes de enviar la información, pero JS no se percata de su existencia.
He probado, sin éxito, cambiar la codificación de los archivos a UTF8.
He probado, sin éxito, soluciones propuestas en la web de PHP para utf8_decode.

La cosa me queda así:

(las ? deberían ser €)

Ahora me queda probar lo de lanzar un piano por la ventana, a ver si acierto.

Se aceptan sugerencias!!!

Última edición por mgusdl; 11/07/2008 a las 06:46 Razón: añadida captura
  #22 (permalink)  
Antiguo 14/07/2008, 01:06
Avatar de mgusdl  
Fecha de Ingreso: abril-2007
Ubicación: Malaga, España
Mensajes: 190
Antigüedad: 17 años, 7 meses
Puntos: 5
Respuesta: Caracteres especiales en Javascript

Al final he hecho una guarrerida para salir al paso:
Código:
txta.value = txta.value.replace(/€/gi, 'EUR');
  #23 (permalink)  
Antiguo 28/07/2008, 07:23
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 22 años, 1 mes
Puntos: 317
Respuesta: Caracteres especiales en Javascript

No entiendo de AJAX, pero no se ve como una mala solución, mgusdl, se parece a la que usaste en el ejemplo anterior.

Cita:
Código:
txta.value.replace('€', 'EUR');
Aproveché que levantaste el tema para leerlo un poco. Me parece que el asunto está resuelto, pero no se nota. Si nadie se enoja, trato de acomodar un poco la información y de redondear algunos detalles.

En realidad, la codificación de la página no siempre depende de nosotros. Debería coincidir con la que use el servidor, y después con la que use el navegador. Esto último es más fácil porque algunos tienen la opción "Automático"; que me parece lee el meta, no creo que revise letra por letra del source.
Por eso hay desarrolladores que adhieren al UTF-8, pero si desde el host la mandan distinto, sus 'caracteres altos' no van a aparecer, y tendrán que ajustar su charset.

Por otro lado, y como dijo derkenuke, una cosa es la página web y otra los mensajes modales; por eso no andan las entities ni los ASCII o Unicode en un alert. Aunque no en todos los casos es así. En JS no existen los códigos "ayudamemoria", pero sí los valores decimales y hexadecimales para caracteres, con una sintaxis diferente.

Vamos a dejar este asunto por un momento para aclarar otro punto. Los caracteres se ven si existe una fuente instalada que los contenga. Quiero decir, que nosotros podemos proponer en CSS una fuente, pero si no está en la máquina de quien mira la página, será reemplazada por la que tenga configurada como default, y que puede no ser parecida ni llegar hasta ese caracter. En algún caso, habrá una lista (en un archivo por ahí del navegador o del sistema operativo) que proponga unas fuentes de reemplazo (según el criterio de 'parecidos' que tenga quien la hizo); o se usará una como recurso para "ponerla al final" de nuestro CSS. Esto es lo que hacen (masomenos) Internet Explorer / Windows en sus últimas versiones. Hay una fuente llamada 'Arial Unicode MS' que es una de las más completas; y el IE la toma cuando algún caracter no aparece en la que tiene declarada la hoja de estilos.

Firefox hace algo parecido, pero debe buscar en más fuentes, porque muestra varios caracteres que no están en 'A U MS'.

Bien, volviendo a los mensajes modales, en Mozilla casi todo está hecho en CSS, así que los mensajes se van a manejar con los mismos recursos del navegador. Y es muy probable que no haya problemas para mostrar un (euro). Pero en IExplorer... . Allí los mensajes son objetos, y su configuración depende del sistema operativo.

Botón secundario en escritorio → Propiedades → apariencia → Avanzadas

Por supuesto que estos valores se pueden leer desde el CSS (Menu, MenuText, message-box) para aplicarlos a un documento web o en una capa a modo de mensaje, y como dije más arriba, si no se encuentra un caracter, se lo reemplaza por el de otra fuente. Pero cuando el cartelito no es CSS estamos en problemas, la única manera de verlo correctamente es entrar en la configuración del SO para cambiar la fuente. Desde la página web no se puede hacer nada.
Si están usando uno en inglés, o alguna vez eligieron un Tema que venía con sus propias fuentes y no estaba en 'español'; es probable que tengan una letra muy linda para ver en la barra de títulos o en los mensajes, pero que no alcance ni al código ANSI
Sugiero que cambien la fuente ya.


Ahora bien, sabemos que un entity no cabe en un JS, lo interpreta como una cadena de caracteres. Y que el lenguaje tiene una limitación natural para interpretar algunas letras (aún con el <script type="text/javascript" src="bla.js" charset="utf-8"></script>
que recomendó MaBoRaK ), así que provee un método para llegar al menos hasta el caracter 65536 en String. Como ya dijimos más arriba, se lo reemplaza por su código en decimal o hexadecimal; que no tendrán un nombre memotécnico, pero es lo que se usa.

En realidad, es también lo que se usa en HTML. Todos ya conocemos los ñ ó &#x00f1;. Las entities llaman a esos números.

Volviendo al JS, el ejemplo con

Código:
confirm(String.fromCharCode(191)+"Desea realmente eliminar el d"+String.fromCharCode(237)+"a seleccionado?")
se podría "automatizar" ya que no es necesario usar uno para cada letra : se pueden meter todas en un mismo String.fromCharCode(), aún las que no sea indispensable cambiar; total ¿quién se va a enterar?. Por supuesto, el mismo método vale para los formatos \x00 y \u0000 (Como hablaron del euro, puse 2 versiones del signo en el ejemplo).

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<title></title>
<script type="text/javascript">

function aDec(){
var texto = document.getElementById("textoOrig").value;
var destr = texto.split("");
var codif = new Array();
var textoCod;

for (i=0; i<destr.length; i++){
var cadenaDec = destr[i].charCodeAt();
codif[i] = cadenaDec;
}

document.getElementById("textoFin").value = codif;
document.getElementById("codigo0").innerHTML = 
"String.fromCharCode(";
document.getElementById("codigo1").innerHTML = ")";
}

function aHexa(){
var texto = document.getElementById("textoOrig").value;
var destr = texto.split("");
var codif = new Array();

for (i=0; i<destr.length; i++){
var cadenaHexa = destr[i].charCodeAt().toString(16);

if (cadenaHexa.length < 4) {
var rellenoCeros = "0000".substring(0,4-cadenaHexa.length);
cadenaHexa = rellenoCeros.concat(cadenaHexa);
}

codif[i] = "\\u"+ cadenaHexa;
}

codifFin = codif.join("");
document.getElementById("textoFin").value = codifFin;
document.getElementById("codigo0").innerHTML = "alert(";
document.getElementById("codigo1").innerHTML = ")";
}

</script>
<style type="text/css">
body{color:#ffffff; background-color:#000000; font-weight:bold;}
#textoFin{font-family:monospace;}
</style>
</head>
<body>
<h2>Conversiones</h2>

<form>
<input type=text value="₠;€" id=textoOrig> Escriba el texto.<br>
<input type=button value="A decimal" onclick="aDec()"> 
<input type=button value="A hexadecimal" onclick="aHexa()"> <br>
<tt id="codigo0"></tt><input type=text value="" id=textoFin>
<tt id="codigo1"></tt> <br>

</form>

</body>
</html>
Ya que Anarko mencionó lo de

Cita:
...Es posible que JavaScript me devuelva &ntilde; cuando yo le envie una ñ ?...
digamos que no. Seguramente PHP lo hace, porque escribe páginas web, pero JS no —al menos, no necesariamente— y como ya vimos, tiene otras formas de convertir caracteres. Pero resulta que hay un truco para los que tienen que verse como tales y coinciden con los de etiquetas, como los paréntesis angulares.

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=utf-8">

<title>ENTITIES.</title>
</script>
<script language="JavaScript">
function convertir(){
var valorDest=document.frm.origen.innerHTML;
document.frm.destino.value = valorDest;
}

</script>
<style type="text/css">
body{color:#ffffff; background-color:#000000;}
</style>

</head>
<body>
<h2>Escriba un texto con par&eacute;ntesis angular y espacio de no separación.</h2>

<form name=frm>
<textarea name=origen cols=45><em>Ñ-ü**€₠</em></textarea> <br>
<input type=button value="Convertir a entity" 
onclick="convertir()" accesskey="-"> <br>
<textarea name=destino rows=3 cols=45 read¬only></textarea>
</form>

</body>
</html>
Esto sirve para meter código fuente en un pre.


Hace algún tiempo le conté a caricatos ( Hola!) que pensaba abrir un tema sobre fuentes y por qué unas se ven y otras no. Lo cierto es que hay suficientes mensajes desparramados como para enterarse, si es que alguien se toma el trabajo de leerlos. Así que me doy por satisfecho con mi modesta participación en este tema, y no abro más nada.

Lo que sí aprovecho es el espacio, y dejo un par de enlaces. Por supuesto, hay muchos otros.

Caracteres especiales, iExplorer y la madre que los parió

(caracteres especiales) acento simple...

predefinicion de codigo hexadecimal a mostrar en textarea

¿Qué codificación de caracteres es más conveniente usar?

Fuentes

Expresiones regulares
  #24 (permalink)  
Antiguo 14/10/2008, 09:44
 
Fecha de Ingreso: octubre-2008
Mensajes: 1
Antigüedad: 16 años, 2 meses
Puntos: 1
De acuerdo Respuesta: Caracteres especiales en Javascript

Estimados amigos, existe la posibilidad de escribir caracteres especiales en javascript usando \xdd, donde dd es el valor hexadecimal del caracter deseado. Ver la tabla completa de caracteres en:



  #25 (permalink)  
Antiguo 25/07/2010, 17:17
 
Fecha de Ingreso: abril-2010
Mensajes: 15
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Caracteres especiales en Javascript

Muchas gracias por esa tabla, muy pero muy util...

Saludos
  #26 (permalink)  
Antiguo 25/07/2010, 19:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Caracteres especiales en Javascript

Hola:

Reabrir un viejo tema para no aportar nada obliga a los moderadores a cerrarlo

El tema siempre puede referenciarse, aún estando cerrado.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:12.