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:
Adobe nos trae un kit bastante útil para los desarrolladores web, Este kit consta de tres partes
Detección en cliente:
un javascript bastant últil, pero pesado a mi gusto. Este script detecta la versión y si está instalado flash player en el navegador(ie, ff, opera)
Nos devuelve una variable boleana (true/false) y con ella podremos jugar para poner alertas mensajes de requerimiento y cosas parecidas.
Detección desde el propio flash(Action script):
unos script que tendremos que poner en nuestro swf para poder detectar el navegador. aún no lo he probado
Y por último una versión de instalación expresa, combina las dos soluciones anteriores, tiene muy buena pinta porque cuanto más fácil para el cliente, mejor
No puedo olvidarme del necesario des-instalador de flash player para poder probar que todo funciona bien.
aquí el enlace