Я использую Ruby для извлечения URL-файла файла для его загрузки и загрузки. Имя файла имеет символы utf8, например:Как кодировать URL-символы ASCII?
www.domain.com/.../ÖÇÄÜ360ÓïÒôÖúÀí.txt
При попытке загрузить указанный выше URL-адрес он терпит неудачу. Использование URI::escape
производит URI, который также не работает:
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
Но если следовать URL Encoding Reference, он работает:
www.domain.com/.../%D6%C7%C4%DC360%D3%EF%D2%F4%D6%FA%C0%ED.txt
Я пытался искать функции в Ruby, который делает точно такой же кодирования, но я не мог найти. Прежде чем попытаться написать функцию, которая реализует таблицу в приведенной выше ссылке, я хочу спросить, знает ли кто-нибудь какую-либо существующую библиотеку, которая делает это. И если я решил сделать это, то какой диапазон символов я должен кодировать, очевидно, не все.
Я использую JRuby 1.6.2 с RUBY_VERSION => "1.8.7"
Байты C3 96 являются кодированными UTF-8 .... Тот же символ представлен в ASCII как одиночный байт D6. Таким образом, одним из способов решения этой проблемы является преобразование ваших символов UTF-8 в ASCII, где вы можете, а затем URI :: escape. Но это не поможет вам для символов Unicode, которые не имеют эквивалента ASCII. –
Вы пробовали ['CGI.escape'] (http://ruby-doc.org/stdlib-1.9.3/libdoc/cgi/rdoc/CGI.html#method-c-escape)? –
@DavidGorsline: Это не работает. Я в конечном итоге с?? для всех символов, кроме «360» и «.txt». Пример, приведенный выше, является реальным примером, если у вас есть какие-либо идеи, вы можете проверить их на строке «................» и сообщить мне, как это сделать. Большое спасибо за помощь. – Rami