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

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

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