Часто я делаю запрос на Ruby, который терпит неудачу, потому что серверу не нравится кодировка. Типичным примером является наличие пробелов как +
, когда сервер понимает только %20
. Сегодня я столкнулся с сервером, который не любит незакодированные дефисы (-
), требуя вместо них %2D
.
Я пробовал CGI.escape
, URI.escape
, ERB::Util.url_encode
, WEBrick::HTTPUtils.escape
, и ни один из них не кодирует дефисы.
В прошлом я прибегал к gsub
обработке оскорбительных символов по мере необходимости, но поскольку я нахожу больше серверов с большим количеством особенностей, я бы предпочел более стабильное решение.
Существует ли стандартный (т.е. без внешних зависимостей) подход, при котором проц кодирует все, что возможно?
Я не ищу просто дефисную кодировку или gsub
всего по одному.
+
. 2) Символы от*
,-
,.
, от0
до9
, отA
доZ
,_
и отa
доz
можно оставить как есть. 3) Замените все остальные символы их процентным кодированием. См.: w3.org/ TR/2013/CR-html5-20130806/ - person 3limin4t0r   schedule 15.10.2019