Solución:
str = "x12x34x56x78x9axbcxdexf1x23x45x67x89xabxcdxefx12x34x56x78x9a".force_encoding('ASCII-8BIT')
puts CGI.escape str
=> "%124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A"
Hoy en día deberías usar ERB::Util.url_encode
o CGI.escape
. La principal diferencia entre ellos es su manejo de espacios:
>> ERB::Util.url_encode("foo/bar? baz&")
=> "foo%2Fbar%3F%20baz%26"
>> CGI.escape("foo/bar? baz&")
=> "foo%2Fbar%3F+baz%26"
CGI.escape
sigue las especificaciones de formularios CGI / HTML y le brinda una application/x-www-form-urlencoded
cadena, que requiere que los espacios se escapen para +
, mientras que ERB::Util.url_encode
sigue RFC 3986, que requiere que se codifiquen como %20
.
Consulte “¿Cuál es la diferencia entre URI.escape y CGI.escape?” para más discusión.
str = "x12x34x56x78x9axbcxdexf1x23x45x67x89xabxcdxefx12x34x56x78x9a"
require 'cgi'
CGI.escape(str)
# => "%124Vx%9A%BC%DE%F1%23Eg%89%AB%CD%EF%124Vx%9A"
Tomado del comentario de @ J-Rou
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)