Есть ли в Ruby 1.9 способ удалить недопустимые последовательности байтов из строк?

Предположим, у вас есть строка вроде "€ foo \ xA0 ", в кодировке UTF-8. Есть ли способ удалить недопустимые последовательности байтов из этой строки? (так вы получите « € foo »)

В ruby-1.8 вы могли бы использовать Iconv.iconv ('UTF-8 // IGNORE', 'UTF-8', «€ foo \ xA0») , но теперь он устарел. «€ foo \ xA0» .encode ( 'UTF-8') ничего не делает, так как это уже UTF-8. Я пробовал:

"€foo\xA0".force_encoding('BINARY').encode('UTF-8', :undef => :replace, :replace => '')

, что дает

"foo"

, но при этом теряется действительный многобайтовый символ €

26
задан StefanH 29 January 2013 в 10:45
поделиться