%escape uri escape_uri(S) when is_list(S) -> escape_uri(unicode:characters_to_binary(S)); escape_uri(<>) when C >= $a, C =< $z -> [C] ++ escape_uri(Cs); escape_uri(<>) when C >= $A, C =< $Z -> [C] ++ escape_uri(Cs); escape_uri(<>) when C >= $0, C =< $9 -> [C] ++ escape_uri(Cs); escape_uri(<>) when C == $. -> [C] ++ escape_uri(Cs); escape_uri(<>) when C == $- -> [C] ++ escape_uri(Cs); escape_uri(<>) when C == $_ -> [C] ++ escape_uri(Cs); escape_uri(<>) -> escape_byte(C) ++ escape_uri(Cs); escape_uri(<<>>) -> "". escape_byte(C) when C >= 0, C =< 255 -> [$%, hex_digit(C bsr 4), hex_digit(C band 15)]. hex_digit(N) when N >= 0, N =< 9 -> N + $0; hex_digit(N) when N > 9, N =< 15 -> N + $a - 10.