Encoding special characters in ror

hi all,
i have one problem while encoding the special characters like
‘’,./?:""!@#$%^&*():;{}[] >,I get string of book name containing some
special characters,
now i have to replace those characters with encoded value so i write
following function below:-

def special_char(text)
#puts “bookname in special_char::::== #{text}”
searchwords = text
arrlength= searchwords.length
#puts “arrlength::::== #{arrlength}”
arrlength.times do|i|
str=searchwords[i]
str=str.gsub(’%’,’%25’),
str=str.gsub(’|’,’%7C’),

    str=str.gsub('\'','%5C'),
    str=str.gsub(' ','%20'),
    str=str.gsub(',','%2C'),
    str=str.gsub('?','%3F')

    searchwords[i]=str
  end

but when i pass the parameter text it gives me error :“private method
`gsub’ called for 84:Fixnum”

if i add one more line in above function as suppose for (:slight_smile: this special
character it will give the above error.

thanks in advanced


Regards
Sachin S. Kewale

you can use URI.escape(‘string with special char’) instead

On Tue, Feb 21, 2012 at 2:23 PM, sachin kewale
[email protected]wrote:

  arrlength= searchwords.length

For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.


David A. Prasetya
RoR Developers

skype: david.angga
phone: +62 85 222 1 5555 2
*

On 21.02.2012, at 11:23, sachin kewale wrote:

    str=searchwords[i]

but when i pass the parameter text it gives me error :“private method `gsub’
called for 84:Fixnum”

Ugly coding, sorry…

Try this instead (works on ruby 1.9):

def encode(string)
map = {“symbol” => “spec_char” . } # full it
start_index = 0
while match = string.match(/[\W]/, start_index)
new_char = map[match.to_s]
string[match.begin(0)…match.end(0)-1] = new_char
start_index = match.begin(0) + new_char.size # correct start_index
end
string
end