我需要在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文件:<?xml version="1.0"?>
此致
答案 0 :(得分:1)
在现代世界中,文本文件具有“编码”,它定义了文件中字符的表示方式。如果您的文件只包含纯ASCII字符(0x01到0x7f),则不会看到这一点,但如果您需要表示其他任何内容,例如符号或重音字符,则该文件的使用者需要知道这些字符是如何编码的。
对扩展字符进行编码有几种不同的方法,最常见的方法是ISO-8859-x(其中x取决于语言)和Unicode,它为每个可能的字符分配唯一的编号。 ISO代码页使用0x80到0xFF的范围来扩展字符。 UTF-8是一个在多个8位字节中表示任意长度的Unicode字符(也称为“代码点”)的系统。相同的扩展字符(例如e-circumflex)在不同的编码中将具有不同的表示。
您使用的序列化程序配置为输出UTF-8编码。该文件的使用者必须知道使用了UTF-8编码,否则可能会损坏数据。您可能已经看过包含黑钻石字符的网页,或者用撇号或其他特殊字符替换为2个奇怪字符的文本。这些是编码/解码不兼容的症状。
可能有一种方法可以强制序列化程序省略编码声明,但如果你这样做,文件的使用者可能无法正确解码,因为它必须猜测编码。