Sto usando Ruby per estrarre un URL di un file da scaricare e scaricare. Il nome del file ha caratteri utf8, ad esempio:Come si esegue la codifica URL dei caratteri ASCII?
www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
Quando si tenta di scaricare l'URL sopra riportato, non riesce. Utilizzando URI::escape
produce un URI che anche non funziona:
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
Ma se io seguo la URL Encoding Reference, funziona:
www.domain.com/.../%D6%C7%C4%DC360%D3%EF%D2%F4%D6%FA%C0%ED.txt
Ho provato a cercare una funzione in Ruby che fa la stessa identica codifica, ma non sono riuscito a trovarne. Prima di provare a scrivere una funzione che implementa la tabella nel link sopra, voglio chiedere se qualcuno conosce una libreria esistente che lo faccia. E se decido di farlo, quale gamma di caratteri dovrei codificare, ovviamente, non tutto.
sto usando JRuby 1.6.2 con RUBY_VERSION => "1.8.7"
I byte C3 96 sono codificati in formato UTF-8. Lo stesso carattere è rappresentato in ASCII come il singolo byte D6. Quindi un modo per affrontare il problema è convertire i caratteri UTF-8 in ASCII, dove è possibile, e quindi URI :: escape. Ma questo non ti aiuterà per i caratteri Unicode che non hanno equivalenti ASCII. –
Hai provato ['CGI.escape'] (http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape)? –
@DavidGorsline: questo non funziona. Finisco con "?" per tutti i caratteri ad eccezione di "360" e ".txt". L'esempio sopra è un esempio reale, fai se hai qualche idea puoi metterli alla prova sulla stringa "..." 3.60 "..." e "fammi sapere come farlo". Grazie mille per l'aiuto. – Rami