– <?xml version =“1.0”encoding =“utf-8”?的含义

我是XML的新手,我试图理解的基础。我读了下面的“学习XML”行,但我还不清楚。有人可以指点我的书或网站,清楚地解释这些基础知识吗?

学习XML – XML声明描述了文档的一些最常见的属性,告诉XML处理器它需要一个XML解析器来解释这个文档。
这是什么意思 ?

我理解“xml版本部分” – doc和doc的用户应该在同一版本的XML“说话”。但是编码部分呢?为什么是必要的?

要理解“encoding”属性,您必须了解字节和字符之间的差异。

将字节视为0到255之间的数字,而字符是“a”,“1”和“Ä”之类的字符。所有可用字符的集合称为字符集。

每个字符具有用于表示它的一个或多个字节的序列;然而,字节的确切数量和值取决于所使用的编码,并且存在许多不同的编码。

大多数编码基于一个旧的字符集和编码称为ASCII,这是每个字符一个字节(实际上,只有7位),并且包含128个字符,包括美国英语中使用的很多常见字符。

例如,以下是由字符集60到65表示的ASCII字符集中的6个字符。

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      @       ║
║  64  ║      A       ║
║  65  ║      B       ║
╚══════╩══════════════╝

在完整的ASCII集中,使用的最低值为零,最高值为127(这两个都是隐藏的控制字符)。

但是,一旦您开始需要比基本ASCII提供的字符更多的字符(例如,带有口音,货币符号,图形符号等的字母),ASCII不适合,您需要更广泛的东西。您需要更多字符(不同的字符集),并且需要不同的编码,因为128个字符不足以容纳所有字符。某些编码提供一个字节(256个字符)或最多六个字节。

随着时间的推移,已经创建了很多编码。在Windows世界中,有CP1252或ISO-8859-1,而Linux用户倾向于使用UTF-8。 Java本机使用UTF-16。

一个编码中的字符的一个字节值序列可能代表另一编码中完全不同的字符,或者甚至可能是无效的。

例如,在ISO 8859-1中,由值226的一个字节表示,而在UTF-8中它是两个字节:195,162。然而,在ISO 8859-1,195,162中将是两个字符, ,¢。

认为XML不是字符序列,而是字节序列。

设想接收XML的系统看到字节195,162。它如何知道这些字符是什么?

为了使系统将这些字节解释为实际字符(并且因此显示它们或将它们转换为另一编码),它需要知道XML中使用的编码。

由于大多数常见编码与ASCII兼容,因此就基本字母字符和符号而言,在这些情况下,声明本身可以仅使用ASCII字符来说明编码是什么。在其他情况下,解析器必须尝试并找出声明的编码。因为它知道声明以<?xml开头,这是很容易做到这一点。 最后,version属性指定了XML版本,目前有两个版本(见Wikipedia XML versions.版本之间有些微差异,所以XML解析器需要知道它是什么处理的)。在大多数情况下反正),1.0版就足够了。

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念