open-uri, возвращающий ASCII-8BIT с веб-страницы, закодированной в iso-8859

Я использую open-uri для чтения веб-страницы, которая, как утверждается, закодирована в iso-8859-1. Когда я читаю содержимое страницы, 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>] 

Я предполагаю, что это связано с тем, что на веб-странице есть байт (или символ) \ x92, который не является допустимым символом iso-8859. http: // ru .wikipedia.org / wiki / ISO / IEC_8859-1 .

Мне нужно хранить веб-страницы в виде файлов в кодировке utf-8. Любые идеи о том, как поступить с веб-страницей, где кодировка неверна. Я могу поймать исключение и попытайтесь угадать правильную кодировку, но это кажется громоздким и подверженным ошибкам.

6
задан mkhettry 19 April 2011 в 05:43
поделиться