Java 在使用DOM创建XML之后,标头包含UTF-8?

Java 在使用DOM创建XML之后,标头包含UTF-8?,java,xml,parsing,dom,utf-8,Java,Xml,Parsing,Dom,Utf 8,我需要在Eclipse(Java)下使用DOM并使用以下代码创建一个XML文件: // write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSo

我需要在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"?>

我的问题是:

  • 这两种声明之间有什么区别

  • 如何使用标题生成XML文件:


  • 关于

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

    有几种不同的方法可以对扩展字符进行编码,最常见的是ISO-8859-x(其中x取决于语言)和Unicode,Unicode为每个可能的字符指定一个唯一的数字。ISO代码页使用范围0x80到0xFF的扩展字符。UTF-8是一种以多个8位字节表示任意长度的Unicode字符(也称为“代码点”)的系统。同一扩展字符(例如e-扬抑符)在不同编码中具有不同的表示形式

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


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

    为什么包含编码会有问题?@JimGarrison:Jim,我没有说这是个问题,只是想了解两者之间的区别。此外,我需要提交一个标题为“”的文件。如果你能解释一下,我将不胜感激。UTF-8是最好的选择。因此,您是否指定
    encoding=“UTF-8”
    并不重要。