Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML规范和UTF-16_Xml_Unicode_W3c_Utf 16_Specifications - Fatal编程技术网

XML规范和UTF-16

XML规范和UTF-16,xml,unicode,w3c,utf-16,specifications,Xml,Unicode,W3c,Utf 16,Specifications,谈到UTF-16编码的数据流和XML编码声明。从这些章节中的信息来看,UTF-16文档中似乎需要一个字节顺序标记。但附录F中的摘要图表给出了一个场景,其中UTF-16输入没有字节顺序标记,但该场景有一个xml声明。根据第4.3.3节,UTF-16编码文档不需要编码声明(在这种情况下,XML声明本身是可选的) 鉴于此信息,如果文件的其余部分来自Unicode 6.2规范(第99页),则既没有BOM也没有xml声明且缺少外部提供的编码信息的UTF-16 xml文档是否被视为格式良好: UTF-16编

谈到UTF-16编码的数据流和XML编码声明。从这些章节中的信息来看,UTF-16文档中似乎需要一个字节顺序标记。但附录F中的摘要图表给出了一个场景,其中UTF-16输入没有字节顺序标记,但该场景有一个xml声明。根据第4.3.3节,UTF-16编码文档不需要编码声明(在这种情况下,XML声明本身是可选的)


鉴于此信息,如果文件的其余部分来自Unicode 6.2规范(第99页),则既没有BOM也没有xml声明且缺少外部提供的编码信息的UTF-16 xml文档是否被视为格式良好:

UTF-16编码方案可能以BOM开头,也可能不以BOM开头。但是,如果没有BOM,并且没有更高级别的协议,UTF-16编码方案的字节顺序是big-endian

因此,UTF-16文档中不需要BOM。但是可能会有一个“更高级别的协议”,比如XML规范,来指示对于没有BOM的UTF-16 XML文档需要做什么

XML 1.0规范中的第4.3.3节规定:

UTF-16编码的实体必须以[ISO/IEC 10646:2000]附录H、[Unicode]第16.8节所述的字节顺序标记开头(零宽度不间断空格字符#xFEFF)

让我们稍后再回到上面。附录F描述了在BOM不存在的情况下检测字符编码的方法。但我认为这一部分与您的问题无关,因为您要问的是,没有BOM和XML声明的UTF-16 XML文档是否“格式良好”,附录F是否是规范的非规范性部分

因此,回到规范,如果“作为一个整体,它与产品标签文档匹配”,则文档是格式良好的。(第2.1节)。查看
文档
表明XML声明是可选的(第2.8节也提到了这一点)。因此,不需要XML声明就可以拥有格式良好的文档;这回答了你一半的问题

另一半是没有XML声明但也没有BOM的UTF-16 XML文档是否仍然可以良好格式。在第4.3.3节中,它说(强调矿山):

在缺少外部传输协议(例如HTTP或MIME)提供的信息的情况下,包含编码声明的实体将以声明中指定的编码以外的编码方式呈现给XML处理器,这是一个致命错误,或对于既不以字节顺序标记也不以编码声明开头的实体,使用UTF-8以外的编码


基于此,在没有外部信息的情况下,没有BOM和编码声明(作为XML声明的一部分)的UTF-16 XML文档不是格式良好的文档(因为致命错误违反了格式良好性,请参见第1.2节中的格式良好性约束定义)。这也与前面第4.3.3节中关于UTF-16 BOM要求的内容相符。

第4.3.3节似乎说不是,但附录F图表使这一点不清楚。Unicode从未规定BOM要求。这是你对你的客户可能做的最糟糕的事情,但创建只能由你自己的应用程序正确读取的文件的权利是给定的。它确保你的客户依赖你,这对业务有好处。