Как закодировать в диаграмму ascii (— в %F3)

Мое приложение должно перенаправить моего пользователя на внешнюю страницу справки, передав имя клиента в качестве параметра, но эта внешняя страница справки использует другую кодировку.

Моя исходная строка

"Diagnósticos da América"

и страница ожидает строку типа

"Diagn%F3sticos%20da%20Am%E9rica"

Я нуждаюсь:

"Diagnósticos da América" => "Diagn%F3sticos%20da%20Am%E9rica"

Я пытаюсь в irb:

"Diagnósticos da América".encode("ISO-8859-1") => "Diagn\xF3sticos da Am\xE9rica"
"Diagnósticos da América".encode("UTF-8", "Windows-1252") => "Diagnósticos da América"
"Diagnósticos da América".encode("Windows-1252") => "Diagn\xF3sticos da Am\xE9rica"

У кого-нибудь есть идея?


person Rodrigo Monteiro Ferreira    schedule 16.03.2016    source источник
comment
comment
Добро пожаловать в Stack Overflow. Пожалуйста, найдите время, чтобы отформатировать свой вопрос для удобочитаемости. SO предоставляет параметры форматирования текста в вопросах, ответах и ​​ограниченное форматирование в комментариях. Они помогают сделать текст более читабельным. Кроме того, SO — это справочник, а не дискуссия, поэтому мы не используем приветствия, прощания (спасибо) или подписи. Я рекомендую прочитать catb.org/esr/faqs/smart-questions.html так как он полон отличной информации о том, как задавать вопросы.   -  person the Tin Man    schedule 16.03.2016
comment
Ответы на этот вопрос о 'url_encode в Ruby' также могут быть полезны.   -  person ventiseis    schedule 16.03.2016


Ответы (1)


Я использую это:

URI.encode("Diagnósticos da América".encode('iso-8859-1'))

Я получил ожидаемый результат:

"Diagn%F3sticos%20da%20Am%E9rica"
person Rodrigo Monteiro Ferreira    schedule 16.03.2016
comment
При ответе было бы неплохо предоставить образец вывода и объяснить, почему ваше решение является решением. Отказ от кода немного помогает, но объяснение/обучение дает истинный долгосрочный ответ и помогает тем, кто ищет аналогичные решения в будущем. Кроме того, предоставляет ли это шестнадцатеричные пробелы по мере необходимости? - person the Tin Man; 17.03.2016