link hexcvt procedure main() write("text = ",image(u := "http://foo bar/")) write("encoded = ",image(ue := encodeURL(u))) end procedure encodeURL(s) #: encode data for inclusion in a URL/URI static en initial { # build lookup table for everything en := table() every en[c := !string(~(&digits++&letters))] := "%"||hexstring(ord(c),2) every /en[c := !string(&cset)] := c } every (c := "") ||:= en[!s] # re-encode everything return c end