Tôi đang sử dụng Ruby để trích xuất URL của tệp để tải xuống và tải xuống. Tên tệp có utf8 ký tự, ví dụ:Tôi làm cách nào để mã hóa URL của các ký tự ASCII?
www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
Khi cố gắng tải xuống URL ở trên, không thành công. Sử dụng URI::escape
tạo ra một URI mà cũng không làm việc:
www.domain.com/.../%C3%96%C3%87%C3%84%C3%9C360%C3%93%C3%AF%C3%92%C3%B4%C3%96%C3%BA%C3%80%C3%AD.txt
Nhưng nếu tôi làm theo các URL Encoding Reference, nó hoạt động:
www.domain.com/.../%D6%C7%C4%DC360%D3%EF%D2%F4%D6%FA%C0%ED.txt
tôi đã cố gắng để tìm kiếm một chức năng trong Ruby mà không được chính xác cùng mã hóa, nhưng tôi không thể tìm thấy bất kỳ mã nào. Trước khi tôi cố gắng viết một hàm thực hiện bảng trong liên kết ở trên, tôi muốn hỏi xem có ai biết bất kỳ thư viện hiện có nào thực hiện điều này không. Và nếu tôi quyết định làm điều này, những ký tự nào tôi nên mã hóa, rõ ràng, không phải mọi thứ.
Tôi đang sử dụng JRuby 1.6.2 với RUBY_VERSION => "1.8.7"
Các byte C3 96 là mã UTF-8 Ö. Cùng một ký tự được biểu diễn bằng ASCII dưới dạng byte đơn D6. Vì vậy, một cách để tiếp cận vấn đề là chuyển đổi các ký tự UTF-8 thành ASCII, nơi bạn có thể, và sau đó là URI :: escape. Nhưng điều đó sẽ không giúp bạn đối với các ký tự Unicode không tương đương ASCII. –
Bạn đã thử ['CGI.escape'] (http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape) chưa? –
@DavidGorsline: Tính năng này không hoạt động. Tôi kết thúc với '?' cho tất cả các ký tự ngoại trừ '360' và '.txt'. Ví dụ trên là một ví dụ thực tế, hãy làm gì nếu bạn có bất kỳ ý tưởng nào bạn có thể kiểm tra chúng trên chuỗi'ÖÇÄÜ360ÓïÒôÖúÀí.txt 'và cho tôi biết cách thực hiện. Cảm ơn rất nhiều vì đã giúp bạn. – Rami