Bug #6696 ยป erb_util_url_encode_rfc_fix.patch
lib/erb.rb | ||
---|---|---|
# Programming%20Ruby%3A%20%20The%20Pragmatic%20Programmer%27s%20Guide
|
||
#
|
||
def url_encode(s)
|
||
s.to_s.dup.force_encoding("ASCII-8BIT").gsub(/[^a-zA-Z0-9_\-.]/n) {
|
||
s.to_s.dup.force_encoding("ASCII-8BIT").gsub(/[^a-zA-Z0-9_\-.~]/n) {
|
||
sprintf("%%%02X", $&.unpack("C")[0])
|
||
}
|
||
end
|
test/erb/test_erb.rb | ||
---|---|---|
assert_equal("%A5%B5%A5%F3%A5%D7%A5%EB",
|
||
ERB::Util.url_encode("\xA5\xB5\xA5\xF3\xA5\xD7\xA5\xEB".force_encoding("EUC-JP")))
|
||
assert_equal("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",
|
||
ERB::Util.url_encode("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"),
|
||
"should not escape any unreserved characters, as per RFC3986 Section 2.3")
|
||
end
|
||
def test_percent_after_etag
|