diff -urN feedtools-0.2.29/lib/feed_tools/feed.rb feedtools/lib/feed_tools/feed.rb
--- feedtools-0.2.29/lib/feed_tools/feed.rb	2008-05-09 10:34:59.000000000 +0200
+++ feedtools/lib/feed_tools/feed.rb	2008-05-09 10:30:13.000000000 +0200
@@ -423,6 +423,7 @@
           raise
         end
       end
+      self.convert_to_utf_8
       unless self.cache_object.nil?
         begin
           self.save
@@ -542,6 +543,30 @@
       end
       return @http_headers
     end
+
+    def convert_to_utf_8
+      if self.encoding != 'utf-8'
+        if !self.http_headers.blank?
+          if self.http_headers['content-type'] =~ /charset=[\w\d-]+/
+            self.http_headers['content-type'].gsub! /(charset=)[\w\d-]+/, '\1utf-8'
+            @feed_data = self.feed_data_utf_8
+          end          
+        end
+        self.set_encoding_from_feed_data
+        @encoding = 'utf-8'
+      end
+    end
+
+    def set_encoding_from_feed_data
+      if self.feed_data =~ /^<\?xml [^>]*encoding="[^\"]*"[^>]*\?>/
+        self.feed_data.gsub! /^(<\?xml [^>]*encoding=")[^\"]*("[^>]*\?>)/, '\1utf-8\2'
+        @feed_data = self.feed_data_utf_8
+      else
+        doc = REXML::Document.new(self.feed_data)
+	doc.xml_decl.encoding = 'utf-8'
+	@feed_data = doc.to_s
+      end
+    end
     
     # Returns the encoding that the feed was parsed with
     def encoding
