Вот типичная ошибка при работе с UTF-8 - «недопустимые токены»
В моем примере это происходит из-за работы с поставщиком услуг SOAP, у которого отсутствие уважения к символам Юникода, просто усечение значений до 100 байтов и игнорирование того, что 100-й байт может находиться в середине многобайтового символа: например:
<name xsi:type="xsd:string">浙江家庭教会五十人遭驱散及抓打 圣诞节聚会被断电及抢走物品(图、视频\xef\xbc</name>
Последние два байта - это то, что осталось от 3-байтового Юникода символ, после ножа усечения предполагается, что в мире используются 1-байтовые символы. Следующая остановка, синтаксический анализатор саксофона и:
xml.sax._exceptions.SAXParseException: <unknown>:1:2392: not well-formed (invalid token)
Меня больше не волнует этот персонаж. Его следует удалить из документа и позволить синтаксическому анализатору sax работать.
Ответ XML действителен во всех остальных отношениях, кроме этих значений.
Вопрос: Как удалить этот символ без анализа всего документа и повторного изобретения кодировки UTF-8 для проверки каждого байта?
Использование: Python + SUDS