Ruby 1.8 плохо поддерживает строки UTF-8. Вам нужно писать байты индивидуально в регулярном выражении, а не полный код:
>> "acentuação".scan(/\xC3\xA7/)
=> ["ç"]
Для соответствия заданному вами диапазону выражение станет немного сложнее:
/([\x4E-\x9E][\x00-\xFF])|(\x9F[\x00-\xA5])/ # (untested)
Это будет улучшено в Ruby 1.9 , хотя.
Редактировать: Как отмечалось в комментариях, символы Юникода \ u4E00- \ u9FA5 отображаются только на вышеприведенное выражение в кодировке UTF16-BE. Кодировка UTF8, вероятно, отличается. Поэтому вам нужно тщательно проанализировать сопоставление и посмотреть, сможете ли вы придумать выражение для сопоставления байтов для Ruby 1.8.