Sharecs.net
  • Trang chủ
  • Kho Tài Liệu – Báo Cáo
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
    • Phần Mềm
No Result
View All Result
  • Trang chủ
  • Kho Tài Liệu – Báo Cáo
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
    • Phần Mềm
No Result
View All Result
Sharecs.net
No Result
View All Result
Home Lập Trình Lập Trình Java Java XML Tutorial

Parser SAX – Invalid Byte 1 of 1-Byte UTF-8 Sequence

by Nguyễn Tuấn
22/04/2023
Lưu ý: Kể từ Java 8, trình phân tích cú pháp XML Apache Xerces tích hợp sẵn của JDK đã được cải thiện rất nhiều và phần lớn các lớp IO hiện mặc định là UTF-8 . Mình không thể mô phỏng cùng một lỗi nữa và các API Xerces nội bộ hiện đang hiển thị ? các ký tự không xác định thay vì hiển thị lỗi Invalid byte 1 of 1-byte UTF-8 sequence.

Mục Lục

  • Parser SAX không thể phân tích cú pháp XML UTF-8 ?
  • Mã hóa ký tự trong XML
  • Mã hóa ký tự trong mã nguồn

Parser SAX không thể phân tích cú pháp XML UTF-8 ?

Ngày xưa, parser XML JDK Apache Xerces được tích hợp sẵn sẽ thông báo lỗi Invalid byte 1 of 1-byte UTF-8 sequence nếu chúng ta cố gắng phân tích cú pháp tệp XML có chứa các ký tự UTF-8.

Ví dụ, một tệp XML chứa một ký hiệu đặc biệt và hai ký tự Trung Quốc.

<?xml version="1.0"?>
<company>
    <staff>
        <firstname>sharecs</firstname>
        <lastname>木金</lastname>
        <nickname>§</nickname>
        <salary>100000</salary>
    </staff>
</company>

Và chúng ta sử dụng Parser SAX để xử lý tệp XML ở trên.

SAXParserFactory factory = SAXParserFactory.newInstance();

  try {

      SAXParser saxParser = factory.newSAXParser();

      PrintAllHandlerSax handler = new PrintAllHandlerSax();
      saxParser.parse("c://test//staff.xml", handler);

  } catch (ParserConfigurationException | SAXException | IOException e) {
      e.printStackTrace();
  }

Kết quả:

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:
  Invalid byte 1 of 1-byte UTF-8 sequence.

Mã hóa ký tự trong XML

Nếu tệp XML bị thiếu mã hóa, trình phân tích cú pháp sẽ mặc định thành UTF-8.

<?xml version="1.0"?>
<company>
    <staff>
        <firstname>sharecs</firstname>
        <lastname>木金</lastname>
        <nickname>§</nickname>
        <salary>100000</salary>
    </staff>
</company>

Cách tốt nhất là xác định mã hóa ký tự cho tệp XML.

<?xml version="1.0" encoding="utf-8"?>
<company>
    <staff>
        <firstname>sharecs</firstname>
        <lastname>木金</lastname>
        <nickname>§</nickname>
        <salary>100000</salary>
    </staff>
</company>

Mã hóa ký tự trong mã nguồn

Mã hóa ký tự không chính xác sẽ gây ra Invalid byte 1 of 1-byte UTF-8 sequence. Ví dụ: chúng ta đọc dữ liệu XML bằng UTF-8, nhưng nó là kiểu mã hóa khác ISO_8859_1.

Để khắc phục, chúng ta có thể xác định mã hóa ký tự cho Parser SAX.

package com.sharecs.xml.sax;

import com.sharecs.xml.sax.handler.PrintAllHandlerSax;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class ReadXmlSaxParser {

  //private static final String FILENAME = "src/main/resources/staff.xml";
  private static final String FILENAME = "c://test//staff.xml";

  public static void main(String[] args) {

      SAXParserFactory factory = SAXParserFactory.newInstance();

      try {

          SAXParser saxParser = factory.newSAXParser();

          PrintAllHandlerSax handler = new PrintAllHandlerSax();
          //saxParser.parse(FILENAME, handler);

          XMLReader xmlReader = saxParser.getXMLReader();
          xmlReader.setContentHandler(handler);

          InputSource source = new InputSource(FILENAME);

          // different encoding
          source.setEncoding(StandardCharsets.UTF_8.displayName());

          xmlReader.parse(source);

      } catch (ParserConfigurationException | SAXException | IOException e) {
          e.printStackTrace();
      }

  }

}

Cảm ơn các bạn đã ghé thăm. Chúc các bạn thành công!

5/5 - (1 bình chọn)
Tags: read xmlsax errorsax parserutf-8
ShareSendTweetShare

Cùng chuyên mục

Cách Đọc File XML Java ( DOM Parser )

SAX Error – Nội dung không được phép trong phần mở đầu

22/04/2023
119
Cách đọc file XML UTF-8 trong Java – (SAX Parser)

Cách đọc file XML UTF-8 trong Java – (SAX Parser)

22/04/2023
98
Cách đọc file XML trong Java (SAX Parser)

Cách đọc file XML trong Java (SAX Parser)

22/04/2023
193
Cách Đọc File XML Java ( DOM Parser )

Các Ví Dụ Về XML Và XSLT Của Java DOM Parser

22/04/2023
25
Cách Đọc File XML Java ( DOM Parser )

Hiển Thị File XML Đẹp Với Java Dom và XSLT

22/04/2023
35
Cách Đọc File XML Java ( DOM Parser )

Cách sửa đổi file XML trong Java (DOM Parser)

22/04/2023
21
Load More

Tài nguyên

Luận văn báo cáo giá rẻ

Cân bằng phương trình phản ứng hóa

Tạo deep link

Custom Css Scrollbar – Render Code

Bài Viết Nổi Bật

  • Download Video Wallpaper Agatsuma Zenitsu – Anime Kimetsu No Yaiba

    Download Video Wallpaper Agatsuma Zenitsu – Anime Kimetsu No Yaiba

    45 shares
    Share 0 Tweet 0
  • 500 Câu Trắc Nghiệm Mạng Máy Tính Phần 1 Có Đáp Án

    0 shares
    Share 0 Tweet 0
  • 5 Mẫu CV HTML Tuyệt Đẹp

    0 shares
    Share 0 Tweet 0
  • Cách backup/restore file bak – mdf/ldf trong SQL Server

    0 shares
    Share 0 Tweet 0
  • Bài Tập Code Python Đơn Giản Có Lời Giải – Phần 1

    1 shares
    Share 0 Tweet 0

Đồ Án Code Quản Lý Nhân Sự & Full Báo Cáo

Convert Long To BigDecimal In Java

So sánh List và Set trong Java Collections

So sánh If Else và Switch Case

FastStone Capture Full Key 2022 Bản Quyền Vĩnh Viễn

300+ File Thiết Kế Ảnh Tết Vector – PSD – AI

  • Giới Thiệu & Liên Hệ
  • Chính Sách Bảo Mật

CopyRight By Sharecs.net DMCA.com Protection Status

No Result
View All Result
  • Trang chủ
  • Kho Tài Liệu – Báo Cáo
  • Thủ Thuật
    • Thủ thuật máy tính
      • Windows
      • MacOS
      • Linux
    • Thủ thuật internet
    • Thủ thuật phần mềm
  • Lỗi máy tính
    • Lỗi internet
    • Lỗi windows
    • Lỗi phần mềm
  • Lập Trình
    • Lập Trình Java
    • Lập trình Python
    • Lập Trình React Native
    • Code Hay
  • Linh Tinh
    • PhotoShop
    • Tải Video Wallpaper
    • Kho Tools
      • Cân Bằng Phương Trình Hóa Học
      • Custom Css Scrollbar – Render Code
      • Tạo Kí Tự Đặc Biệt Online
      • Tạo Deep Link
    • Tài Liệu – Luận Văn – Báo Cáo
    • Kho Theme Website WordPress
    • Phần Mềm

CopyRight By Sharecs.net DMCA.com Protection Status

This website uses cookies. By continuing to use this website you are giving consent to cookies being used. Visit our Privacy and Cookie Policy.