[Java Xml] SAX Error – MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence

Chào các bạn, trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách khắc phục lỗi MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence khi sử dụng SAX

Vấn đề
Khi một số ký tự UTF-8 đặc biệt xuất hiện trong file XML, nếu SAX parser không được cấu hình để phân tích cú pháp UTF-8 đúng cách, sẽ xuất hiện exception.

Code:
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
Invalid byte 1 of 1-byte UTF-8 sequence.
...
Giải pháp
Giải pháp khá đơn giản, lấy nội dung ở định dạng UTF-8 và ghi đè nguồn đầu vào của SAX.

Java:
File file = new File("c:\\file-utf.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,"UTF-8");

InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");

saxParser.parse(is, handler);
Có thể xem chi tiết về source code tại - Đọc file Xml có encoding UTF-8 với SAX Parser


Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :)

Bài viết tham khảo tại: https://mkyong.com/java/sax-error-malformedbytesequenceexception-invalid-byte-1-of-1-byte-utf-8-sequence
 

Bình luận