Estoy tratando de escapar de URL (porcentaje de codificación) caracteres no ascii en varias URL con las que estoy tratando. Estoy trabajando con una aplicación flash que carga recursos como imágenes y clips de sonido desde estas URL. Dado que los nombres de archivo pueden contener caracteres no ASCII, así: 日本語.jpg
I a escapar por UTF-8 codificación de los caracteres, y luego por ciento-escapar de los bytes Unicode, para obtener lo siguiente:URL que escapa de caracteres Unicode chinos/japoneses para Internet Explorer
%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
Estos nombres de archivo funcionan bien cuando ejecuto la aplicación en cualquier navegador que no sea Internet Explorer. He probado Firefox, Safari y Chrome. Pero cuando inicio la aplicación en el IE (intentado tanto 6 y 8) y se intenta cargar el clip de sonido, me sale: Error #2044: Unhandled ioError
, y la URL se ha corrompido a algo como:
æ¥æ¬èª.jpg
Cualquier pensamientos sobre cómo solucionar esto? Esto es solo probar la aplicación flash con las URL locales del sistema de archivos. He también notó que Internet Explorer no es capaz de localizar un archivo, tales como: file:///C:/%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
, aunque Chrome/Firefox decodificarlo y carga muy bien para un archivo con la ruta
C:\日本語.jpg
editar
Creo que mi problema es la misma que la encontrada en el siguiente fragmento de código ActionScript:
import flash.display.Loader;
import flash.net.URLRequest;
...
var ldr:Loader;
var req:URLRequest = new URLRequest("日本語.jpg");
ldr = new Loader();
ldr.load(req);
El uso de la cadena 日本語.jpg
funcionará en IE, mientras que el uso de la cadena %E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
funciona en otros navegadores. Lo que necesito es un formulario único que funcione en todos los navegadores. Probé la codificación %u
y establecí el encabezado de solicitud http en Content-Type: text/html; charset=utf-8
sin suerte en forma de porcentaje de escape o no.
Windows usa UTF-16 para nombres de archivo. Por lo tanto, intente con '% 65% E5% 67% 2C% 8A% 9E'. – Gumbo
No hay dados con el nombre UTF-16, IE todavía no pudo encontrarlo. – Bear
relacionado: http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent – cregox