Variables con acento, por get, a Flash (as2)

February 5, 2009 | In: flash

Pasar parámetros por GET a Flash es una práctica muy extendida; pero no deja de dar dolores de cabeza a los desarrolladores, cuando se trata de una cadena con acentos.

La codificación de http (ASCII hex); es el mismo que usa HTML y Javascript para poder decodificar estas cadenas. Por alguna extraña razón Flash utiliza lo mismo pero a excepción de lo acentos, no comprendo por qué usa una codificación distinta para los acentos.

Vamos a ver esas diferencias:

Flash(ejecutar en el IDE de flash)

trace(escape(‘á’)+’ ===> ‘+’á’);
trace(escape(‘Á’)+’ ===> ‘+’Á’);
trace(escape(‘é’)+’ ===> ‘+’é’);
trace(escape(‘É’)+’ ===> ‘+’É’);
trace(escape(‘í’)+’ ===> ‘+’í’);
trace(escape(‘Í’)+’ ===> ‘+’Í’);
trace(escape(‘ó’)+’ ===> ‘+’ó’);
trace(escape(‘Ó’)+’ ===> ‘+’Ó’);
trace(escape(‘ú’)+’ ===> ‘+’ú’);
trace(escape(‘Ú’)+’ ===> ‘+’Ú’);

Javascript(ejecutar en el navegador)

alert(escape(‘á’)+’ ===> ‘+’á’);
alert(escape(‘Á’)+’ ===> ‘+’Á’);
alert(escape(‘é’)+’ ===> ‘+’é’);
alert(escape(‘É’)+’ ===> ‘+’É’);
alert(escape(‘í’)+’ ===> ‘+’í’);
alert(escape(‘Í’)+’ ===> ‘+’Í’);
alert(escape(‘ó’)+’ ===> ‘+’ó’);

alert(escape(‘Ó’)+’ ===> ‘+’Ó’);
alert(escape(‘ú’)+’ ===> ‘+’ú’);
alert(escape(‘Ú’)+’ ===> ‘+’Ú’);

La diferencia de resultado es absoluta; no tiene nada que ver. Por lo que la solución solo para por una cosa:

  1. parsear la cedena que vamos a pasar por GET, con la forma que acepta flash
  2. al recibir la variable; vamos a ejecutar la función “unescape” en el flash para poder utilizarla
  3. lamentarse de haber usado flash

Comemtario