iso-8859-1 でエンコードされていると主張する Web ページを読むために open-uri を使用しています。ページのコンテンツを読み取ると、open-uri は ASCII-8BIT でエンコードされた文字列を返します。
open("http://www.nigella.com/recipes/view/DEVILS-FOOD-CAKE-5310") {|f| p f.content_type, f.charset, f.read.encoding }
=> ["text/html", "iso-8859-1", #<Encoding:ASCII-8BIT>]
これは、Web ページに有効な iso-8859 文字ではないバイト (または文字) \x92 があるためだと推測しています。http://en.wikipedia.org/wiki/ISO/IEC_8859-1 .
Web ページを utf-8 でエンコードされたファイルとして保存する必要があります。エンコーディングが正しくない Web ページの処理方法に関するアイデア。例外をキャッチして正しいエンコーディングを推測することもできますが、それは面倒でエラーが発生しやすいようです。