I'm wondering why URI.encode does not encode &=? URI.encode('&=?') => '&=?'
Is there alternative that works better? or should I write my own?
-reynard
I'm wondering why URI.encode does not encode &=? URI.encode('&=?') => '&=?'
Is there alternative that works better? or should I write my own?
-reynard
There's an optional second arg to specify chars to replace:
http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/classes/URI/Escape.html#M009245
b
Reynard wrote:
What's the second argument supposed to be though? should I create a regexp from scratch or use a pre-defined one? the documentation is not very clear.
From googling I found that some people say URI.encode is buggy and
suggested to use CGI.escape? seems to work for me.
- reynard
After I sent that I got curious... I found that the second arg is just a regex with the chars to escape... so /[&=?]/ would escape the chars you're worried about.
I also found however, that it *only* escapes the chars in the regex if you provide one... so you'll have to make sure to escape the stuff that would have been escaped.
I also figured out that the REGEXP::UNSAFE constant they mention is actually URI::REGEXP::UNSAFE. If you require 'uri' in irb and then type that, it'll dump the chars that are in the default regex:
/[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/n
And, one more thing: the file that this is defined in should be at RUBY_ROOT/uri/common.rb... and there are a lot of regexes defined in there.
b
Reynard wrote: