【问题标题】:What is encoding in XML?XML 中的编码是什么?
【发布时间】:2011-08-05 09:47:09
【问题描述】:

什么是 XML 中的编码?使用的正常编码是 utf-8。它与其他编码有何不同?使用它的目的是什么?

【问题讨论】:

  • @Nishant:一般来说,这并不是对字符编码主题的一个很好的介绍。我认为这才是问题的真正意义所在。
  • 我刚刚添加了 OP 指出的 XML 规范,“使用的正常编码是 UTF-8”。它不应该是一个答案。
  • @Joachim。 ya Joachim 在 W3C 中不是很清楚。你能建议任何其他链接吗?
  • 你的意思是除了我在下面的答案中给你的链接吗?

标签: xml encoding utf-8 xsd


【解决方案1】:

XML 文档可以包含非 ASCII 字符,例如挪威语 æ ø å 或法语 ê è é。因此,为避免错误,您可以设置编码或将 XML 文件另存为 Unicode。

XML Encoding Rules

【讨论】:

    【解决方案2】:

    character encoding 指定字符如何映射到字节。由于 XML 文档是以字节流的形式存储和传输的,因此这对于表示构成 XML 文档的 unicode 字符是必要的。

    UTF-8 被选为默认值,因为它有几个优点:

    • 它与 ASCII 兼容,因为所有有效的 ASCII 编码文本也是有效的 UTF-8 编码(但不一定相反!)
    • 对于“普通”字母(也存在于 ASCII 中的字母),每个字符仅使用 1 个字节
    • 它可以表示所有现有的 Unicode 字符

    字符编码是一个比 XML 更普遍的话题。 UTF-8 仅限于在 XML 中使用。

    What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text 是一篇很好的文章,很好地概述了该主题。

    【讨论】:

      【解决方案3】:

      当数据被存储或传输时,它只是字节。这些字节需要一些解释。使用非英语语言环境的用户过去常常对仅出现在他们的语言环境中的字符有一些问题。这些字符经常以错误的方式显示。

      使用 XML 具有如何解释其字节字符的信息,可以以正确的方式显示。

      【讨论】:

      • 请注意,英语本身也曾经有过麻烦。 ASCIIEBCDIC 例如使用完全不同的编码,即使是“普通”英文字符也是如此。编码不仅适用于“世界其他地方”;-)
      • @Joachim:非常同意。认为 ASCII 对我们的祖父母来说已经足够好,所以对我们来说应该足够好,这种极端保守和反动的观点是非常短视的——而且是虚假的。但非常常见。
      【解决方案4】:

      最初创建计算机时,它们大多只处理英语中的字符,导致了 7 位 US-ASCII 标准。

      但是,世界上有很多不同的书面语言,必须找到能够在计算机中使用它们的方法。

      如果您限制自己使用某种语言,第一种方法可以正常工作,它是使用特定于文化的编码,例如 ISO-8859-1,它能够以 8 位或 GB2312 表示拉丁-欧洲语言字符汉字。

      第二种方式稍微复杂一些,但理论上可以表示世界上的每个字符,它是 Unicode 标准,其中每种语言的每个字符都有特定的代码。 但是,鉴于现有字符的数量很大(Unicode 5 中为 109,000 个),Unicode 字符通常使用三字节表示(一个字节用于 Unicode 平面,两个字节用于字符代码。

      为了最大限度地兼容现有代码(有些代码仍在使用 ASCII 文本),UTF-8 标准编码被设计为一种存储 Unicode 字符的方法,仅使用最少的空间,如 Joachim Sauer 中所述回答。

      因此,如果文件旨在仅由仅理解这些语言的软件(和人)编辑或读取,则通常会看到使用特定字符集(例如 ISO-8859-1)编码的文件,如果存在 UTF-8需要具有高度的互操作性和文化独立性。 当前趋势是 UTF-8 替换其他字符集,尽管它需要软件开发人员的工作,因为 UTF-8 字符串比固定宽度的字符集字符串更复杂。

      【讨论】:

      • Unicode 也需要用于更高级的标点符号和符号,例如¢£€ 和“弯引号”等。如果一门编程语言以 Unicode 作为其基本字符集开始,那么使用 Unicode 就不会变得更加困难;那么你不必担心可变宽度编码——或者不应该。
      猜你喜欢
      • 1970-01-01
      • 2011-07-21
      • 2022-11-25
      • 1970-01-01
      • 2012-08-13
      • 2011-07-14
      • 2017-07-28
      • 1970-01-01
      相关资源
      最近更新 更多