Tôi đang phân tích cú pháp một số XML với hàm elementtree.parse(). Nó hoạt động, ngoại trừ một số ký tự utf-8 (ký tự byte đơn trên 128). Tôi thấy rằng trình phân tích cú pháp mặc định là XMLTreeBuilder dựa trên người nước ngoài.Trình phân tích cú pháp XML thay thế cho ElementTree để giảm bớt tai họa UTF-8?
Có một trình phân tích cú pháp thay thế mà tôi có thể sử dụng có thể ít nghiêm ngặt hơn và cho phép các ký tự utf-8 không?
Đây là lỗi tôi nhận được với phân tích cú pháp mặc định:
ExpatError: not well-formed (invalid token): line 311, column 190
Nhân vật gây ra điều này là một x92 byte duy nhất (trong hex). Tôi không chắc chắn điều này thậm chí là một ký tự utf-8 hợp lệ. Nhưng nó sẽ được tốt đẹp để xử lý nó bởi vì hầu hết các biên tập viên văn bản hiển thị này như: í
EDIT: bối cảnh của ký tự là: không thể, nơi tôi cho rằng nó được coi là một apostraphe ưa thích, nhưng trong hex trình chỉnh sửa, cùng trình tự đó là: 63 61 6E 92 74
Không phải châu Âu, chúng tôi chắc chắn ở Hoa Kỳ. Tôi không làm điều đó, tôi hứa :) – Kekoa
Câu hỏi của bạn bị cắt xén: bạn nói rằng văn bản là "không thể", đó là một chữ cái nhỏ tôi có dấu chấm (u2019). Tôi đối phó với đủ ngoại ngữ không xác định một cách thường xuyên mà tôi giải thích bằng văn bản. Vui lòng sửa câu hỏi. Câu trả lời là như nhau; chỉ cần thay thế CP852 cho CP1252. Nhân tiện, 0x92 trong CP1252 không phải là dấu nháy đơn, đó là một ‘báo giá’ đúng. Tôi có lẽ không nên ngạc nhiên rằng một số phần mềm bị hỏng đủ để có được * dấu nháy đơn * sai. (Không phải lỗi của bạn - lỗi của bất kỳ phần mềm nào đã xuất ra chuỗi đó.) –
@Glenn Maynard: (1) Việc sao chép văn bản không phải ASCII bởi một OP thường bị cắt xén. Những gì bạn thấy không phải lúc nào cũng là những gì họ có. the_raw_bytes.repr() là bạn của họ và của bạn. "Apostraphe" của ông là một đầu mối quan trọng (2) "bức thư nhỏ tôi với một cấp tính (u2019)": huh? Theo tiêu chuẩn Unicode, U + 2019 là MARK CHUYÊN NGHIỆP QUẢNG CÁO khi được mã hóa trong cp1252 là 0x92 (3) Các nhà sản xuất phần mềm bị cáo buộc phải đọc chuẩn Unicode về U + 2019: "đây là ký tự được ưu tiên sử dụng cho dấu nháy đơn ". (4) cp852? 0x92 -> NHỎ LETTER L (ell not I eye) VỚI ACUTE –