Мне кажется, что вы используете Ruby 1.8 , поэтому у вас плохая поддержка кодирования.
В Ruby 1.8 библиотека jcode могла бы пойти здесь , чтобы найти сторонние библиотеки, которые помогут вам. Ruby 1.9 имеет улучшенную поддержку кодирования, фактически это одно из основных изменений в этом выпуске.
Если вы полностью контролируете свое приложение, возможно, вы можете закодировать вашу строку без каких-либо сущностей utf-8 непосредственно в ее источнике. Таким образом, вы избежите парсинга регулярных выражений, и CGI.unescapeHTML будет работать.
Для справки и лучшего понимания поддержки юникода в ruby JEG2 series предоставит вам все необходимое.