Ich verwende Ruby, um eine URL einer Datei zu extrahieren, um sie herunterzuladen und herunterzuladen. Der Dateiname ist UTF-8-Zeichen, ex:Wie führe ich eine URL-Codierung von ASCII-Zeichen durch?
www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
Beim Versuch, die oben genannte URL zum Download, es funktioniert nicht. URI::escape
erhält man eine URI, die auch nicht funktioniert:
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
Aber wenn ich die URL Encoding Reference folgen, es funktioniert:
www.domain.com/.../%D6%C7%C4%DC360%D3%EF%D2%F4%D6%FA%C0%ED.txt
ich für eine Funktion in Ruby zu suchen versucht, die genau tut gleiche Kodierung, aber ich konnte keine finden. Bevor ich versuche, eine Funktion zu schreiben, die die Tabelle in dem obigen Link implementiert, möchte ich fragen, ob jemand eine existierende Bibliothek kennt, die dies tut. Und wenn ich mich dazu entscheide, welche Reihe von Zeichen ich verschlüsseln sollte, offensichtlich nicht alles.
Ich bin mit JRuby 1.6.2 mit RUBY_VERSION => "1.8.7"
Die Bytes C3 96 sind ein UTF-8-codiertes Ö. Das gleiche Zeichen wird in ASCII als das einzelne Byte D6 dargestellt. Eine Möglichkeit, das Problem anzugehen, besteht darin, Ihre UTF-8-Zeichen in ASCII zu konvertieren, wo Sie können, und dann URI :: escape. Aber das hilft dir nicht für Unicode-Zeichen, die kein ASCII-Äquivalent haben. –
Haben Sie ['CGI.escape'] (http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape) ausprobiert? –
@DavidGorsline: Dies funktioniert nicht. Ich lande mit '?' für alle Zeichen außer "360" und ".txt". Das obige Beispiel ist ein echtes Beispiel, wenn Sie irgendwelche Ideen haben, können Sie sie auf der Zeichenkette "..." testen ... und lassen Sie mich wissen, wie es geht. Vielen Dank für Ihre Hilfe. – Rami