+1  A: 

str.gsub("\342\200\231", "'") should work

I got this from:
'’'.to_s which outputs "\342\200\231"

Other html characters that may be substituted ( http://ask.metafilter.com/62656/Eliminating-odd-characters-from-web-site ):

"\342\200\176" - "'"
"\342\200\177" - "'"
"\342\200\230" - "'"
"\342\200\231" - "'"
"\342\200\232" - ','
"\342\200\233" - "'"
"\342\200\234" - '"'
"\342\200\235" - '"'
"\342\200\041" - '-'
"\342\200\174" - '-'
"\342\200\220" - '-'
"\342\200\223" - '-'
"\342\200\224" - '--'
"\342\200\225" - '--'
"\342\200\042" - '--'
"\342\200\246" - '...'

Kalyan M
that worked great for 1.8.7, thanks. For 1.9.1, I found out, that gives the error I mentioned in the comment at my original post. For 1.9.1, I had to use str.gsub("’","'") sheesh!