Python 2.6.6 С помощью difflib.HtmlDiff() сравниваю 2 файла, создаю html, который почему-то имеет кодировку ISO-8859-1, что напрямую прописано в веб-странице:
charset=ISO-8859-1
def print_html(array1,array2,file_w):
fw=open(file_w,'w')
# array1, array2 - юникоидные списки (массивы)
array1=array1.split(' ')
array2=array2.split(' ')
diff = difflib.HtmlDiff().make_file(array1, array2)
fw.write(diff + "\n")
fw.close()
UnicodeEncodeError: 'ascii' codec can't encode character u'\u0442' in position 1098: ordinal not in range(128)
diff=repr(diff).encode("UTF-8")
'ascii' codec can't decode byte 0xd2 in position 1074: ordinal not in range(128)
# Кодируем списки
array1=array1.encode("ISO-8859-5")
array2=array2.encode("ISO-8859-5")
# Меняем кодировку в HTML
replace(file_w,'charset=ISO-8859-1','charset=ISO-8859-5')
UPD. Нашел следующий багрепорт с 2008 года: http://bugs.python.org/issue2052. Так когда починят-то?! (Судя по всему, в Python 3 он все еще остался). И как мне обратно сконвертировать в UTF-8?