Como devo lidar com um XMLSyntaxError no lxml do Python enquanto analisa um arquivo XML grand

Estou tentando analisar um arquivo XML com mais de 2 GB com a biblioteca lxml do Python. Infelizmente, o arquivo XML não tem uma linha informando a codificação de caracteres, então eu tenho que configurá-lo manualmente. Enquanto percorre o arquivo, ainda existem alguns caracteres estranhos que surgem de vez em quand

Não sei ao certo como determinar a codificação de caracteres da linha, mas, além disso, o lxml gerará um XMLSyntaxError do escopo do loop for. Como posso capturar esse erro corretamente e lidar com ele corretamente? Aqui está um trecho de código simplista:

from lxml import etree
etparse = etree.iterparse(file("my_file.xml", 'r'), events=("start",), encoding="CP1252")
for event, elem in etparse:
    if elem.tag == "product":
        print "Found the product!"
        elem.clear()

Isso eventualmente produz o erro:

XMLSyntaxError: PCDATA invalid Char value 31, line 1565367, column 50

Essa linha do arquivo fica assim:

% sed -n "1565367 p" my_file.xml
<romance_copy>Ravioli Florentine. Tender Ravioli Filled With Creamy Ricotta Cheese And

O 'F' de preenchido realmente se parece com isso no meu terminal:

questionAnswers(8)

yourAnswerToTheQuestion