Foros del Web » Programando para Internet » Javascript »

Función imprimir caracteres especiales

Estas en el tema de Función imprimir caracteres especiales en el foro de Javascript en Foros del Web. Hola a Todos en FDW, hoy vengo a aportar una ayuda para todas aquellas personas que como yo estuvimos buscando como imprimir los caracteres especiales ...
  #1 (permalink)  
Antiguo 16/02/2014, 11:01
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años, 1 mes
Puntos: 19
Función imprimir caracteres especiales

Hola a Todos en FDW, hoy vengo a aportar una ayuda para todas aquellas personas que como yo estuvimos buscando como imprimir los caracteres especiales desde el javascript, por tal motivo he creado una función con la cual se puede realizar dicha acción, la idea parte de lo que encontré en esta página. http://www.emm-gfx.net/2010/07/acent...en-javascript/

Luego con las modificaciones que le realice, la función quedo así:
Código Javascript:
Ver original
  1. function stringUnicode(str){
  2.     str = str.replace(' ','\u00a0');//espacio sin separación.
  3.     str = str.replace('¡','\u00a1');//signo de apertura de exclamación.
  4.     str = str.replace('¢','\u00a2');//signo de centavo.
  5.     str = str.replace('£','\u00a3');//signo de Libra Esterlina.
  6.     str = str.replace('¤','\u00a4');//signo de divisa general.
  7.     str = str.replace('¥','\u00a5');//signo de yen.
  8.     str = str.replace('¦','\u00a6');//barra vertical partida.
  9.     str = str.replace('§','\u00a7');//signo de sección.
  10.     str = str.replace('¨','\u00a8');//diéresis - umlaut.
  11.     str = str.replace('©','\u00a9');//signo de derechos de autor - copyright.
  12.     str = str.replace('ª','\u00aa');//género feminino - indicador ordinal f.
  13.     str = str.replace('«','\u00ab');//comillas anguladas de apertura.
  14.     str = str.replace('¬','\u00ac');//signo de no - símbolo lógico.
  15.     str = str.replace('®','\u00ae');//signo de marca registrada.
  16.     str = str.replace('¯','\u00af');//macrón - raya alta.
  17.     str = str.replace('°','\u00b0');//signo de grado.
  18.     str = str.replace('±','\u00b1');//signo de más o menos.
  19.     str = str.replace('²','\u00b2');//superíndice dos - cuadrado.
  20.     str = str.replace('³','\u00b3');//superíndice tres - cúbico.
  21.     str = str.replace('´','\u00b4');//acento agudo - agudo espaciado.
  22.     str = str.replace('µ','\u00b5');//signo de micro.
  23.     str = str.replace('¶','\u00b6');//signo de fin de párrafo.
  24.     str = str.replace('·','\u00b7');//punto medio - coma Georgiana.
  25.     str = str.replace('¸','\u00b8');//cedilla.
  26.     str = str.replace('¹','\u00b9');//superíndice uno.
  27.     str = str.replace('º','\u00ba');//género masculino - indicador ordinal m.
  28.     str = str.replace('»','\u00bb');//comillas anguladas de cierre.
  29.     str = str.replace('¼','\u00bc');//fracción un cuarto.
  30.     str = str.replace('½','\u00bd');//fracción medio - mitad.
  31.     str = str.replace('¾','\u00be');//fracción tres cuartos.
  32.     str = str.replace('¿','\u00bf');//signo de interrogación - apertura.
  33.     str = str.replace('À','\u00c0');//A mayúscula con acento grave.
  34.     str = str.replace('Á','\u00c1');//A mayúscula con acento agudo.
  35.     str = str.replace('Â','\u00c2');//A mayúscula con acento circunflejo.
  36.     str = str.replace('Ã','\u00c3');//A mayúscula con tilde.
  37.     str = str.replace('Ä','\u00c4');//A mayúscula con diéresis.
  38.     str = str.replace('Å','\u00c5');//A mayúscula con anillo.
  39.     str = str.replace('Æ','\u00c6');//diptongo AE mayúscula (ligadura).
  40.     str = str.replace('Ç','\u00c7');//C cedilla mayúscula.
  41.     str = str.replace('È','\u00c8');//E mayúscula con acento grave.
  42.     str = str.replace('É','\u00c9');//E mayúscula con acento agudo.
  43.     str = str.replace('Ê','\u00ca');//E mayúscula con acento circunflejo.
  44.     str = str.replace('Ë','\u00cb');//E mayúscula con diéresis.
  45.     str = str.replace('Ì','\u00cc');//I mayúscula con acento grave.
  46.     str = str.replace('Í','\u00cd');//I mayúscula con acento agudo.
  47.     str = str.replace('Î','\u00ce');//I mayúscula con acento circunflejo.
  48.     str = str.replace('Ï','\u00cf');//I mayúscula con diéresis.
  49.     str = str.replace('Ð','\u00d0');//ETH islandesa mayúscula.
  50.     str = str.replace('Ñ','\u00d1');//N mayúscula con tilde - eñe.
  51.     str = str.replace('Ò','\u00d2');//O mayúscula con acento grave.
  52.     str = str.replace('Ó','\u00d3');//O mayúscula con acento agudo.
  53.     str = str.replace('Ô','\u00d4');//O mayúscula con acento circunflejo.
  54.     str = str.replace('Õ','\u00d5');//O mayúscula con tilde.
  55.     str = str.replace('Ö','\u00d6');//O mayúscula con diéresis.
  56.     str = str.replace('×','\u00d7');//signo de multiplicación.
  57.     str = str.replace('Ø','\u00d8');//O mayúscula with slash.
  58.     str = str.replace('Ù','\u00d9');//U mayúscula con acento grave.
  59.     str = str.replace('Ú','\u00da');//U mayúscula con acento agudo.
  60.     str = str.replace('Û','\u00db');//U mayúscula con acento circunflejo.
  61.     str = str.replace('Ü','\u00dc');//U mayúscula con diéresis.
  62.     str = str.replace('Ý','\u00dd');//Y mayúscula con acento agudo.
  63.     str = str.replace('Þ','\u00de');//THORN islandesa mayúscula.
  64.     str = str.replace('ß','\u00df');//s minúscula (alemán) - Beta minúscula.
  65.     str = str.replace('à','\u00e0');//a minúscula con acento grave.
  66.     str = str.replace('á','\u00e1');//a minúscula con acento agudo.
  67.     str = str.replace('â','\u00e2');//a minúscula con acento circunflejo.
  68.     str = str.replace('ã','\u00e3');//a minúscula con tilde.
  69.     str = str.replace('ä','\u00e4');//a minúscula con diéresis.
  70.     str = str.replace('å','\u00e5');//a minúscula con anillo.
  71.     str = str.replace('æ','\u00e6');//diptongo ae minúscula (ligadura).
  72.     str = str.replace('ç','\u00e7');//c cedilla minúscula.
  73.     str = str.replace('è','\u00e8');//e minúscula con acento grave.
  74.     str = str.replace('é','\u00e9');//e minúscula con acento agudo.
  75.     str = str.replace('ê','\u00ea');//e minúscula con acento circunflejo.
  76.     str = str.replace('ë','\u00eb');//e minúscula con diéresis.
  77.     str = str.replace('ì','\u00ec');//i minúscula con acento grave.
  78.     str = str.replace('í','\u00ed');//i minúscula con acento agudo.
  79.     str = str.replace('î','\u00ee');//i minúscula con acento circunflejo.
  80.     str = str.replace('ï','\u00ef');//i minúscula con diéresis.
  81.     str = str.replace('ð','\u00f0');//eth islandesa minúscula.
  82.     str = str.replace('ñ','\u00f1');//eñe minúscula - n minúscula con tilde.
  83.     str = str.replace('ò','\u00f2');//o minúscula con acento grave.
  84.     str = str.replace('ó','\u00f3');//o minúscula con acento agudo.
  85.     str = str.replace('ô','\u00f4');//o minúscula con acento circunflejo.
  86.     str = str.replace('õ','\u00f5');//o minúscula con tilde.
  87.     str = str.replace('ö','\u00f6');//o minúscula con diéresis.
  88.     str = str.replace('÷','\u00f7');//signo de división.
  89.     str = str.replace('ø','\u00f8');//o barrada minúscula.
  90.     str = str.replace('ù','\u00f9');//u minúscula con acento grave.
  91.     str = str.replace('ú','\u00fa');//u minúscula con acento agudo.
  92.     str = str.replace('û','\u00fb');//u minúscula con acento circunflejo.
  93.     str = str.replace('ü','\u00fc');//u minúscula con diéresis.
  94.     str = str.replace('ý','\u00fd');//y minúscula con acento agudo.
  95.     str = str.replace('þ','\u00fe');//thorn islandesa minúscula.
  96.     str = str.replace('ÿ','\u00ff');//y minúscula con diéresis.
  97.     str = str.replace('Œ','\u0152');//OE mayúscula (ligadura).
  98.     str = str.replace('œ','\u0153');//oe minúscula (ligadura).
  99.     str = str.replace('Š','\u0160');//S mayúscula con caron.
  100.     str = str.replace('š','\u0161');//s minúscula con caron - acento hacek.
  101.     str = str.replace('Ÿ','\u0178');//Y mayúscula con diéresis.
  102.     str = str.replace('ƒ','\u0192');//f minúscula itálica - signo de función.
  103.     str = str.replace('–','\u2013');//raya corta.
  104.     str = str.replace('——','\u2014');//raya larga.
  105.     str = str.replace('‘','\u2018');//comilla izquierda - citación.
  106.     str = str.replace('’','\u2019');//comilla derecha - citación.
  107.     str = str.replace('‚','\u201a');//comilla de citación - baja.
  108.     str = str.replace('“','\u201c');//comillas de citación - arriba izquierda.
  109.     str = str.replace('”','\u201d');//comillas de citación - arriba derecha.
  110.     str = str.replace('„','\u201e');//comillas de citación - abajo.
  111.     str = str.replace('†','\u2020');//cruz.
  112.     str = str.replace('‡','\u2021');//doble cruz.
  113.     str = str.replace('•','\u2022');//viñeta - bullet.
  114.     str = str.replace('…','\u2026');//puntos suspensivos.
  115.     str = str.replace('‰','\u2030');//signo de pro mil.
  116.     str = str.replace('€','\u20ac');//signo de euro.
  117.     str = str.replace('™','\u2122');//signo de marca registrada - trade mark.
  118.  
  119.     return str;//Regresa la cadena codificada con unicode.
  120. }

Solo deben llamar a la función e indicarle el mensaje stringUnicode('mensaje')

Espero le sea de ayuda a alguien más..

Saludos.
  #2 (permalink)  
Antiguo 16/02/2014, 11:46
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: Función imprimir caracteres especiales

buenas,
si bien entiendo que el tema intenta ser un aporte, soy del pensamiento que también está abierto al debate para discutir opiniones e ideas que ayuden a desarrollar un conocimiento más profundo del tema. bajo este pretexto, en mi opinión personal la función o propósito carece de sentido alguno. me explico...

tomando como ejemplo el primer replace, ¿cuántos caracteres crees que hay en este string para javascript? '\u00a0'. la resputa: uno. alert("\u00a0".length); internamente javascript interpretará el string como un solo carácter y lo convertirá a su equivalente según corresponda. de modo que, por ejemplo, para la apertura de exclamación (¡), el código str = str.replace('¡','\u00a1'); se traduce internamente a str = str.replace('¡', '¡');. o sea, estás realizando una subtitución innecesaria ya que estás intercambiando el carácter exactamente por el mismo, con la única distinción en que uno es literal y el otro es unicode.

Cita:
...para todas aquellas personas que como yo estuvimos buscando como imprimir los caracteres especiales desde el javascript...
en la mayoría de los casos, el problema de escribir caracteres fuera del idioma natural, es debido a la codificación en que se graba el script. o sea, es exactamente el mismo tema como los casos de documentos html con problema de codificación.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 16/02/2014 a las 12:03
  #3 (permalink)  
Antiguo 16/02/2014, 12:26
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 8 meses
Puntos: 578
Respuesta: Función imprimir caracteres especiales

@zerokilled: ¿Lo has probado? Realmente funciona, lo está reemplazando por esos caracteres escapados, no es lo mismo que su forma literal.

Lee esto.
  #4 (permalink)  
Antiguo 16/02/2014, 13:46
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: Función imprimir caracteres especiales

hola @phperos,
creo que realmente no estás comprendiendo al punto que quiero llegar. la culpa de que javascript no "pueda" mostrar correctamente ciertos caracteres no es por falta de habilidad del lenguaje, sino por una mal codificación.

si, lo probé... de funcionar, funciona. el resultado satisfactorio dependerá mucho de cómo lo has probado. si copias el código a la consola y realizas allí las pruebas, no verás ninguna diferencia. la diferencia no la notarás porque el código es introducido directamente a una consola, donde los caracteres no sufrirán ningún cambio de codificación. no obstante, la historia puede ser distinta cuando creas un documento.

el desarrollador suficientemente experimentado sabe que es buena práctica guardar los documentos en codificación utf8. asumiendo que sigue esa directriz, no tiene sentido (de nuevo, en mi opinión) una función que dado un carácter sea reemplazado por otro igual que está escrito en formato unicode. carece sentido porque ese string ya está debidamente codificado al momento de crear el documento. además, javascript mostrará correctamente el string siempre y cuando el navegador haya cargado el documento con la misma codificación. en caso contrario, entonces el problema no es javascript, sino la codificación con que el navegador carga el documento. lo cual sería lo más adecuado corregir.

por otro lado, si se tratara de un desarrollador de poca experiencia y le vale igual la codificación del documento, la función presentaría problema. por ejemplo, si almacenas el código en iso-8859-1 y corres la mala suerte del editor no avisar que el documento tiene caracteres fuera de la codificación, entonces ocurre una subtitución automatica (de parte del editor) de dichos caracteres por otro. comúnmente un rombo con un signo de pregunta. la función aquí no haría su trabajo adecuado. nuevamente, el problema aquí es de codificación.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: caracteres, escapar, especiales, funcion, reemplazar, string, unicode
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 22:14.