Я пытаюсь использовать символы URL-escape (процентов-кодировки) не-ascii в нескольких URL-адресах, с которыми я имею дело. Я работаю с флэш-приложением, которое загружает такие ресурсы, как изображения и звуковые клипы из этих URL-адресов. Поскольку имена файлы могут содержать не-ASCII символы, например, так: 日本語.jpg
убегает их UTF-8, кодирующие символы, а затем процент, спасаясь от Юникода байт, чтобы получить следующее:URL-адрес Escaping китайских/японских символов Unicode для Internet Explorer
%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
Эти имена файлов отлично работают, когда я запускаю приложение в любом браузере, отличном от Internet Explorer. Я пробовал Firefox, Safari и Chrome. Но когда я запускаю приложение в IE (пробовал как 6 и 8), и он пытается загрузить звуковой клип, я получаю: Error #2044: Unhandled ioError
и URL был поврежден на что-то вроде:
æ¥æ¬èª.jpg
Любые мысли о том, как это исправить? Это просто тест-драйв флеш-приложения с локальными URL-адресами файловой системы. Я также заметил, что интернет-исследователь не может найти файл, такие как: file:///C:/%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
, хотя Chrome/Firefox будет декодировать его и загружать просто отлично для файла с путем
C:\日本語.jpg
редактировать
Я думаю, что моя проблема такая же, как та, встречающегося в следующем фрагменте кода ActionScript:
import flash.display.Loader;
import flash.net.URLRequest;
...
var ldr:Loader;
var req:URLRequest = new URLRequest("日本語.jpg");
ldr = new Loader();
ldr.load(req);
Использование строки 日本語.jpg
будет работать в IE, а строка %E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
будет работать в других браузерах. Мне нужна единая форма, которая будет работать во всех браузерах. Я попробовал кодировку %u
и установил заголовок http-запроса на Content-Type: text/html; charset=utf-8
без везения ни в процентной, ни в escape-форме.
Windows использует UTF-16 для имен файлов. Поэтому попробуйте '% 65% E5% 67% 2C% 8A% 9E'. – Gumbo
Нет кубиков с именем UTF-16, IE все еще не смог найти его. – Bear
related: http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent – cregox