程序如何决定xml文件的编码?

时间:2016-04-08 07:27:19

标签: java xml encoding utf-8

我在处理(Unmarshall)xml文件时对xml编码有疑问。 我们在文件的开头指定xml文件的编码,如下所示。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

我的问题是在程序读取此行之后,它决定以下内容以UTF-8编码。但要阅读第一行,程序如何确定它是以UTF-8编码的?我的意思是在读取字节流时,程序如何知道它需要对第一行使用哪种编码?

此致 Mayuran

1 个答案:

答案 0 :(得分:2)

写于F.1节。 xml规范:

  

F.1无外部编码信息的检测

     

因为每个XML实体都没有伴随外部编码   信息而非UTF-8或UTF-16编码必须以XML开头   编码声明,其中第一个字符必须是<?xml,   任何符合标准的处理器可以在两到四个八位字节之后检测到   输入,以下哪种情况适用。在阅读这个清单时,它   可能有助于了解UCS-4<#x0000003C?为   #x0000003FUTF-16数据流所需的字节顺序标记为#xFEFF。符号##用于表示除外的任何字节值   连续两个## s不能同时为00。

基本上,有两种选择:

  1. 有一个字节顺序标记(BOM)
  2. 没有BOM。
  3. specification然后清楚地记录特定八位字节流的表,处理器应该使用这些表来确定用于查看encoding声明的编码。