diff --git a/classes/feedparser.php b/classes/feedparser.php
index eb8606de912339a5c8ad8d3f9cc278c830b06373..53f6c52a95c51cf348a8f3efaf94b2a505247229 100644
--- a/classes/feedparser.php
+++ b/classes/feedparser.php
@@ -20,6 +20,24 @@ class FeedParser {
 
 		$error = libxml_get_last_error();
 
+		// libxml compiled without iconv?
+		if ($error && $error->code == 32) {
+			if (preg_match('/^(<\\?xml .*?)encoding="(.+?)"(.*?\\?>)/', $data, $matches) === 1) {
+				libxml_clear_errors();
+
+				$enc = $matches[2];
+
+	         $data = iconv($enc, 'UTF-8//IGNORE', $data);
+	         $data = preg_replace('/^<\\?xml .*?\\?>/', $matches[1] . $matches[3] , $data);
+
+				$this->doc = new DOMDocument();
+				$this->doc->loadXML($data);
+
+				$error = libxml_get_last_error();
+		   }
+		}
+
+		// some terrible invalid unicode entity?
 		if ($error && $error->code == 9) {
 			libxml_clear_errors();