Có thể, vấn đề của bạn là bạn đã phân tích cú pháp, và bây giờ bạn đang cố gắng in nội dung của XML và bạn không thể vì có một số ký tự Unicode ngoại. Cố gắng mã hóa chuỗi unicode của bạn dưới dạng ascii trước:
unicodeData.encode('ascii', 'ignore')
phần 'bỏ qua' sẽ cho biết chỉ bỏ qua các ký tự đó. Từ các tài liệu python:
>>> u = unichr(40960) + u'abcd' + unichr(1972)
>>> u.encode('utf-8')
'\xea\x80\x80abcd\xde\xb4'
>>> u.encode('ascii')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character '\ua000' in position 0: ordinal not in range(128)
>>> u.encode('ascii', 'ignore')
'abcd'
>>> u.encode('ascii', 'replace')
'?abcd?'
>>> u.encode('ascii', 'xmlcharrefreplace')
'ꀀabcd޴'
Bạn có thể muốn đọc bài viết này: http://www.joelonsoftware.com/articles/Unicode.html, mà tôi thấy rất hữu ích như một hướng dẫn cơ bản về những gì đang xảy ra. Sau khi đọc, bạn sẽ ngừng cảm thấy như bạn chỉ đoán những gì lệnh để sử dụng (hoặc ít nhất là đã xảy ra với tôi).
Nguồn
2010-07-11 19:10:51
Tôi vừa đến SO để đăng câu hỏi này. Có một cách dễ dàng để khử trùng một chuỗi cho 'unicode()'? –
Vui lòng kiểm tra [this] (http://stackoverflow.com/questions/3224427/python-sanitize-a-string-for-unicode/3224890#3224890) trả lời cho một câu hỏi liên quan: “Python UnicodeDecodeError - Tôi có phải mã hóa sự hiểu lầm không ? ” – tzot