Does ruby core has any method to create a Base64 for URL variant? --------- Using a URL-encoder on standard Base64, however, is inconvenient as it will translate the '+' and '/' characters into special percent-encoded hexadecimal sequences ('+' = '%2B' and '/' = '%2F'). When this is later used with database storage or across heterogeneous systems, they will themselves choke on the '%' character generated by URL-encoders (because the '%' character is also used in ANSI SQL as a wildcard). For this reason, a modified Base64 for URL variant exists, where no padding '=' will be used, and the '+' and '/' characters of standard Base64 are respectively replaced by '-' and '_', so that using URL encoders/decoders is no longer necessary and has no impact on the length of the encoded value, leaving the same encoded form intact for use in relational databases, web forms, and object identifiers in general.
on 2008-10-01 23:35
on 2008-10-02 00:10
On Oct 1, 2008, at 5:40 PM, ara.t.howard wrote: > > a @ http://codeforpeople.com/ > -- > we can deny everything, except that we have the possibility of being > better. simply reflect on that. > h.h. the 14th dalai lama Here's another: # base64, but change + and / which are significant to URLs to - and _, # respectively, (which is what RFC4648 calls "base64url") and remove # embedded newlines (since they are recommended by MIME encoding and not # base64, per se) encoded_token = [cipher_token].pack('m').tr('+/','- _').gsub("\n",'') the encoded_token is "safe" for a URL and the cipher_token is retrieved with: cipher_token = encoded_token.tr('-_','+/').unpack('m') The details of the cipher_token aren't important save that it can contain any byte values. -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com