anchor.diff:  percent_encode([C|Etc], Encoded) when ?is_unreserved(C) ->
     percent_encode(Etc, [C|Encoded]);
   percent_encode([C|Etc], Encoded) ->
  -  Value = [io_lib:format("%~s", [encode([Char], 16)]) 
  +  Value = [io_lib:format("%~s", [encode([Char], 16)])
               || Char <- binary_to_list(unicode:characters_to_binary([C]))],
     percent_encode(Etc, [lists:flatten(Value)|Encoded]).
   
  
positive.code: 
  -author("Marc Worrell <marc@worrell.nl>").
  
  -export (
     [
      url_encode/1,
      url_decode/1,
      url_path_encode/1,
      url_valid_char/1,
      url_unreserved_char/1,
      percent_encode/1,
      percent_encode/2,
  
negative.code: -spec decode_data_url(binary()) -> {ok, Mime::binary(), Charset::binary(), Data::binary()} | {error, unknown_encoding}.
  decode_data_url(<<"data:", Data/binary>>) ->
      Parts = binary:split(Data, <<";">>, [global]),
      [Encoded|Args] = lists:reverse(Parts),
      case decode_url_data(Encoded) of
          {ok, Decoded} ->
              {Mime, Charset} = decode_data_url_args(Args),
  