Open new items in text mode (unicode), and safely handle unicode in news item
names.

svn path=/main/trunk/; revision=13975
diff --git a/pym/portage/news.py b/pym/portage/news.py
index 750df3d..c6bd9ea 100644
--- a/pym/portage/news.py
+++ b/pym/portage/news.py
@@ -7,6 +7,7 @@
 	"DisplayProfileRestriction", "DisplayKeywordRestriction",
 	"DisplayInstalledRestriction"]
 
+import codecs
 import logging
 import os
 import re
@@ -116,6 +117,8 @@
 					itemid + "." + self.language_id + ".txt")
 				if not os.path.isfile(filename):
 					continue
+				if not isinstance(itemid, unicode):
+					itemid = unicode(itemid, encoding='utf_8', errors='replace')
 				item = NewsItem(filename, itemid)
 				if not item.isValid():
 					continue
@@ -224,7 +227,8 @@
 		return self._valid
 
 	def parse(self):
-		lines = open(self.path).readlines()
+		lines = codecs.open(self.path, mode='r',
+			encoding='utf_8', errors='replace').readlines()
 		self.restrictions = []
 		invalids = []
 		for i, line in enumerate(lines):