From: Robert Klemme Date: 2009-02-23T23:15:36+09:00 Subject: Re: Improving hexadecimal escaping performance 2009/2/23 Iñaki Baz Castillo > > 2009/2/23 Robert Klemme : > > Well, you can at least do this in 1.8 > > > > def self::hex_escape(str) > > str.gsub(/[^a-zA-Z0-9_\-.]/n) {|m| sprintf("%%%02X", m[0]) } > > end > > > > And this in 1.9 > > > > def self::hex_escape(str) > > str.gsub(/[^a-zA-Z0-9_\-.]/n) {|m| sprintf("%%%02X", m.getbyte(0)) } > > end > > > Thanks, do you mean that "m[0]" in Ruby 1.9 has a different behaviour > than in 1.8? maybe in 1.9 "m[0]" returns the first character (even if > it's more than two bytes as "ñ", "€"...) while in 1.8 it returns just > the firrst two bytes? > > PD: I've Ruby 1.9 (2007-12-25 revision 14709) and I don't have > "getbyte()" method for String. 15:15:25 ~$ ruby -ve 'p "foo"[0]' ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin] 102 15:15:31 ~$ ruby19 -ve 'p "foo"[0]' ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-cygwin] "f" 15:15:34 ~$ ruby19 -ve 'p "foo".getbyte(0)' ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-cygwin] 102 15:15:57 ~$ robert -- remember.guy do |as, often| as.you_can - without end