XML 数据的编码方式

2016-01-29 19:12 4 1 收藏

XML 数据的编码方式,XML 数据的编码方式

【 tulaoshi.com - ASP 】

  Chris Lovett
Microsoft Corporation
2000 年 3 月

目录

1、跨平台数据格式
2、XML 和字符编码
3、字符集和 MSXML DOM
4、用 MSXML 创建新的 XML 文档
5、结论
6、有关详细信息


--------------------------------------------------------------------------------

摘要:本文介绍了字符编码的工作原理,特别是在 XML 和 MSXML DOM 中的工作原理。

近来很多人问我,如何使 XML 文件在不同的平台间正确地传递数据。他们创建了 XML 文档,键入了数据,粘上了几个标记,调整了标记的格式,甚至放入了 <?xml version="1.0"? 声明,作为额外增添。然后他们试着装载它,可得到的却是意想不到的出错消息,Microsoft(R) XML Parser (MSXML) 报告说数据有问题。对初编 XML 者来说,这真令人沮丧。难道它竟不能正常工作吗?

当然不是。当从 MSXML 收到意想不到的出错消息时,很可能是因为接收数据的平台将其存储到了与发送数据不同的平台上,结果导致了字符编码问题。

跨平台数据格式
自从计算机软件和硬件从业人员设法将两台计算机连接到一起以来,他们就一直向着创建跨平台技术并使不同的平台能够共享数据的领域而努力奋斗。很早以来,由于不同类型的计算机的数量、连接方式、希望共享的数据种类的急剧增加,事态也就变得越来越复杂。

经过几十年关于跨平台编程技术的研究,当今(而且可能在未来的很长一段时期内)唯一的真正跨平台解决方案是通过简单的标准数据格式得到的。Web 的成功正是建立在这种格式上的。在 Web 服务器和 Web 浏览器之间传递的主要内容是 HTTP 标题和 HTML 页,两者都是标准的文本格式。

在以下几节中,我将讨论字符编码和标准字符集、Unicode、HTML Content-Type 标题、HTML Content-Type 元标记和字符实体。如果您熟悉上述概念,可跳过这些内容去读 encoding XML data for the XML Document Object Model (DOM) programmer(针对 XML 文档对象模型 (DOM) 编程人员的编码 XML 数据)的提示和技巧。有关详细信息,请参阅 XML and Character Encoding(XML 和字符编码)。

关于字符编码
标准文本格式是建立在标准字符集之上的。要记住,所有的计算机均将文本存储为数字。然而,不同的系统也可以用不同的数字存储相同的文本。下表显示了一组字节是如何被存储的,第一个是使用默认代码页 1252、运行 Microsoft Windows(R) 的典型计算机,第二个是使用 Macintosh Roman 代码页的典型 Apple(R) Macintosh(R) 计算机。

Byte Windows Macintosh
140 &#338; &aring;
229 &aring; &Acirc;
231 &ccedil; &Aacute;
232 è &Euml;
233 é &Egrave;


比方说,如果您的祖母从 http://www.barnesandnoble.com/(英文)订购了一本新书,她不会想到她的 Macintosh 计算机存储字符的方式,并不同于运行 www.barnesandnoble.com(英文)的新 Windows 2000 Web 服务器。在往 Internet 订购单的发货栏中输入瑞典家中的地址时,她相信 Internet 会正确地传递字符 &aring;(在其 Macintosh 上的字节值是 140),并没想到接收和处理她发送消息的计算机会将字节值 140 转换为字母 &#338;。

Unicode
Unicode Consortium(统一码协会)确信(用双字节而不是单字节表示每个字符)定义一个通用的代码页是个好主意,该代码页适用于全世界所有的语言,从而不同代码页之间的映射问题将不复存在。

既然如此,如果 Unicode 解决了跨平台的字符编码问题,那为何它却未成为唯一的标准呢?第一个问题是,转换到 Unicode 有时意味着使所有的文件大小加倍 — 这样做在网络世界中是不可想象的。因此有人仍乐于使用老的、单字节的字符集,如 ISO-8859-1 到 ISO-8859-15、Shift-JIS、EUC-KR 等等。

第二个问题是,仍存在许多并非基于 Unicode 的系统,这就意味着在网络上,某些组成 Unicode 字符的字节值可能会给那些更旧的系统造成严重问题。因此定义了“Unicode 转换格式 (UTF)”;它们运用位转换技术对 Unicode 字符进行编码,使其成为在老系统上“透明的”(或可安全通过)的字节值。

此类字符编码中最普及的是 UTF-8。UTF-8 采用 Unicode 标准的前 127 个字符(它们恰好是基本的拉丁文字符:A-Z、a-z 和 0-9,以及几个标点字符),并直接将其映射到单字节值。然后采用位转换技术,用字节的高位来编码 Unicode 字符的其余部分。这样做的结果是,小瑞典字符 &aring; (0xE5) 变成了下列双字节乱码:&Atilde;&yen; (0xC3 0xA5)。所以,除非您能够在脑海里进行位转换,否则,在UTF-8 中编码的数据是无法被人读懂的。

Content-Type 标题
因为更旧的单字节字符集仍被使用,所以只有当指定了数据所在的实际字符集之后,传输数据的问题才能得以解决。认识到这一点后,Internet 电子邮件和 HTTP 协议小组定义了一种标准方法,用以在消息标题 Content-Type 属性

来源:http://www.tulaoshi.com/n/20160129/1508739.html

延伸阅读
标签: Web开发
数据绑定系列的第二篇是如何从 XML 数据限制中生成一个 Java 语言。 本文通过完整的代码展现了如何生成类和代码,并提供了如何定制您自己版本的建议。 还没有看过第一篇吗?第一篇, "对象,无处不在的对象", 解释了数据绑定是如何将 XML 和 Java 语言对象互为转换。它比较了数据绑定和其它在 Java 程序中处理 XML 的方法, 并介...
标签: Web开发
列表9-3 中的script 程序使用每个子元素(TITLE、AUTHOR、BINDING、PAGES 与PRICE)的text 属性,来作为取得元素字符数据的快捷方法。例如,下列的程序代码被用来撷取TITLE元素中的字符数据: title.innerText=Document.documentElement.childNodes(0).text; text 属性不仅提供了目前节点所代表的元素其文字内容,也提供任何后续元素的文字内...
标签: Web开发
当今世界,技术发展迅猛,不论是什么行业,大多数关键数据都是放置于数据库中进行管理的,一来目前数据库技术已经相当成熟,二来其管理功能非常强大。以往的数据库应用,其数据底层结构一般来说都是相对固定,也就是说,开发出来的应用程序是针对具体的数据结构,其应用范畴受到一定限制,开放性较差。 XML作为一种可扩展性标记语言,...
标签: ASP
  当对现有数据库的数据进行分析时,经常需要对某一部分的数据进行分析.此时,使用 1.SQL查询分析器?  但其往往不直观,查找某个关键字又需要重新执行新的SQL. 2.SQLXML模板?  但又不一定有权限建立新的虚拟目录,且某些SQL语句SQLXML模板不支持 数据拆离时也有相似问题。 尤其当不同网络,不同环境,需要重新导入数据,进...
标签: Web开发
一个客户提供一个股价的信息,要求放在页面上,显示一些数据,需要从远程获取xml,然后解析写在网页上,开始不会觉得很难,其实蛮简单的,先用javascript写了一个: 以下为引用的内容: script language=javascript var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load("http://****.com/scripts/***...

经验教程

373

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部