Rebol3 Code Examplex


URL encoding

Encode text for safe use in URLs.

Rebol [
    title: "Rosetta code: URL encoding"
    file:  %URL_encoding.r3
    url:   https://rosettacode.org/wiki/URL_encoding
]

task-except: charset [#"0"-#"9" #"A"-#"Z" #"a"-#"z"]
RFC-3986:    charset [#"0"-#"9" #"A"-#"Z" #"a"-#"z" "-._~"]
js-except:   charset [#"0"-#"9" #"A"-#"Z" #"a"-#"z" "-._~;,/?:@&=+$!*'()#"]

foreach src [
    "http://foo bar/"
    "https://rosettacode.org/wiki/URL_encoding"
    "https://en.wikipedia.org/wiki/Pikes Peak granite"
][
    probe src
    print ["enhex:     " enhex src]
    print ["enhex/uri: " enhex/uri src]
    print ["RFC-3986:  " enhex/except src RFC-3986]
    print ["Custom:    " enhex/except src task-except]
    print ["JavaScript:" enhex/except src js-except]
    print ""
]

Output:

"http://foo bar/"
enhex:      http%3A%2F%2Ffoo%20bar%2F
enhex/uri:  http%3A%2F%2Ffoo+bar%2F
RFC-3986:   http%3A%2F%2Ffoo%20bar%2F
Custom:     http%3A%2F%2Ffoo%20bar%2F
JavaScript: http://foo%20bar/

"https://rosettacode.org/wiki/URL_encoding"
enhex:      https%3A%2F%2Frosettacode.org%2Fwiki%2FURL_encoding
enhex/uri:  https%3A%2F%2Frosettacode.org%2Fwiki%2FURL_encoding
RFC-3986:   https%3A%2F%2Frosettacode.org%2Fwiki%2FURL_encoding
Custom:     https%3A%2F%2Frosettacode%2Eorg%2Fwiki%2FURL%5Fencoding
JavaScript: https://rosettacode.org/wiki/URL_encoding

"https://en.wikipedia.org/wiki/Pikes Peak granite"
enhex:      https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPikes%20Peak%20granite
enhex/uri:  https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPikes+Peak+granite
RFC-3986:   https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FPikes%20Peak%20granite
Custom:     https%3A%2F%2Fen%2Ewikipedia%2Eorg%2Fwiki%2FPikes%20Peak%20granite
JavaScript: https://en.wikipedia.org/wiki/Pikes%20Peak%20granite