Обычно я делаю запрос в Ruby, который не выполняется, потому что серверу не нравится кодировка. Типичным примером является наличие пробелов +
, когда сервер понимает только %20
. Сегодня я наткнулся на сервер, который не любит дешифрованные без кода (-
), требуя %2D
.
Я пробовал CGI.escape
, URI.escape
, ERB::Util.url_encode
, WEBrick::HTTPUtils.escape
, и ни один из них не кодирует дефисы.
В прошлом я прибегал к gsub
по мере необходимости для символов-нарушителей, но, поскольку я нахожу больше серверов с большим количеством идиосинкразий, я бы предпочел более стабильное решение.
Существует ли стандартный (то есть без внешних зависимостей) подход, который в процентах кодирует все, что возможно?
Я не ищу только дефисное кодирование или gsub
все по одному.