Tôi đang cố gắng để thoát khỏi ký tự không phải ascii URL (mã hóa phần trăm) trong một số URL mà tôi đang xử lý. Tôi đang làm việc với một ứng dụng flash tải các tài nguyên như hình ảnh và clip âm thanh từ các URL này. Kể từ khi tên tập tin có thể chứa các ký tự khác ASCII không, như vậy: 日本語.jpg
tôi thoát khỏi chúng bằng cách utf-8 mã hóa các ký tự, và sau đó phần trăm-thoát các byte unicode, để có được những điều sau đây:URL Thoát các ký tự Unicode Trung Quốc/Nhật Bản cho Internet Explorer
%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
Những tên tệp này hoạt động tốt khi tôi chạy ứng dụng trong bất kỳ trình duyệt nào khác ngoài Internet Explorer - tôi đã thử Firefox, Safari và Chrome. Nhưng khi tôi khởi động ứng dụng trong IE (thử cả 6 và 8) và nó sẽ cố gắng để tải các clip âm thanh, tôi nhận được: Error #2044: Unhandled ioError
, và URL đã bị hỏng một cái gì đó như:
æ¥æ¬èª.jpg
Bất kỳ suy nghĩ về cách sửa lỗi này? Đây chỉ là kiểm tra lái xe ứng dụng flash với URL hệ thống tệp cục bộ. Tôi cũng nhận thấy rằng Internet Explorer không có khả năng xác định vị trí một file như: file:///C:/%E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
, mặc dù Chrome/Firefox sẽ giải mã nó và tải tốt cho một tập tin với đường dẫn
C:\日本語.jpg
sửa
tôi nghĩ rằng vấn đề của tôi là giống như một gặp phải trong đoạn mã ActionScript sau:
import flash.display.Loader;
import flash.net.URLRequest;
...
var ldr:Loader;
var req:URLRequest = new URLRequest("日本語.jpg");
ldr = new Loader();
ldr.load(req);
Sử dụng chuỗi 日本語.jpg
sẽ hoạt động trong IE, trong khi sử dụng chuỗi %E6%97%A5%E6%9C%AC%E8%AA%9E.jpg
hoạt động trong các trình duyệt khác. Những gì tôi cần là một biểu mẫu duy nhất sẽ hoạt động trong tất cả các trình duyệt. Tôi đã thử mã hóa %u
và đặt tiêu đề yêu cầu http thành Content-Type: text/html; charset=utf-8
không có may mắn ở dạng phần trăm thoát hoặc không thoát.
Windows sử dụng UTF-16 cho tên tệp. Vì vậy, hãy thử '% 65% E5% 67% 2C% 8A% 9E'. – Gumbo
Không có xúc xắc với tên UTF-16, IE vẫn không thể định vị nó. – Bear
liên quan: http://stackoverflow.com/questions/75980/best-practice-escape-or-encodeuri-encodeuricomponent – cregox