0

我需要在 Eclipse(对于 Java)下使用 DOM 并使用以下代码创建一个 XML 文件:

        // write the content into xml file
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("output.xml"));  
        transformer.transform(source, result);

我的 XML 的第一行是:

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

并不是 :

<?xml version="1.0"?>

我的问题是:

  1. 这两个声明有什么区别?

  2. 如何使用标头生成 XML 文件:<?xml version="1.0"?>

问候

4

1 回答 1

1

在现代世界中,文本文件具有“编码”,它定义了字符在文件中的表示方式。如果您的文件仅包含纯 ASCII 字符(0x01 到 0x7f),则您不会看到这一点,但如果您需要表示其他任何内容,例如符号或重音字符,那么文件的使用者需要知道这些字符是如何编码的。

有几种不同的方法来编码扩展字符,最常见的是 ISO-8859-x(其中 x 取决于语言)和 Unicode,它为每个可能的字符分配一个唯一的编号。ISO 代码页使用 0x80 到 0xFF 的范围来表示扩展字符。UTF-8 是一种以多个 8 位字节表示任意长度的 Unicode 字符(也称为“代码点”)的系统。相同的扩展字符(例如 e-circumflex)在不同的编码中会有不同的表示。

您使用的序列化程序配置为输出 UTF-8 编码。该文件的使用者必须知道使用了 UTF-8 编码,否则可能会破坏数据。您可能已经看到包含黑色菱形字符的网页,或者将撇号或其他特殊字符等内容替换为 2 个奇怪字符的文本。这些是编码/解码不兼容的症状。

可能有一种方法可以强制序列化程序省略编码声明,但如果你这样做,文件的使用者可能无法正确解码它,因为它必须猜测编码。

于 2012-05-09T16:36:17.450 回答