Всем привет. Я не являюсь программистом питона, но есть вопрос.
Так вышло, что результаты моих программ обрабатываются в питоне. Результаты моих программ - это корректный XML (точнее RSS feed) в кодировке utf-8. Так вот, питон ругается на некорректные символы в моем XML'е (например, символ 0xab - левая кавычка-ёлочка).
Разбираясь в проблеме, я нахожу документ (http://www.w3.org/TR/2000/REC-xml-20001006#NT-Char), в котором специфицируются стандартные для XML символы. Судя по этому документу, символ 0xab входит в число корректных.

Почему питон ругается на стандартные символы XML в кодировке utf-8 и как это исправить?

Как ругается то?

'utf8' codec can't decode byte 0xab in position 63: unexpected code byte
В UTF-8 символы кодируются последовательностями из 1-4 байт. Причём однобайтовые символы находятся в интервале 0-127. Так что 0xab - это некорректный для UTF-8 символ. Правильное представление кавычки-ёлочки - \xc2\xab.


>>> '\xab'.decode('cp1251')
u'\xab'
>>> print _
«
>>> _.encode('utf8')
'\xc2\xab'
что мне с этим делать?:)
diggi
что мне с этим делать?:)

Исправить исходный XML, проставив кодировку (по умолчанию определяется из BOM или, при отсутствии BOM, берётся utf-8):
<?xml version="1.0" encoding="windows-1251"?>