Я использую Java 6. У меня есть шаблон XML, который начинается, как такКак Apache commons IO конвертирует мой XML-заголовок из UTF-8 в UTF-16?
<?xml version="1.0" encoding="UTF-8"?>
Однако я заметил, когда я анализирую и выводить его с помощью следующего кода (с помощью Apache Commons-IO 2.4) ...
Document doc = null;
InputStream in = this.getClass().getClassLoader().getResourceAsStream(“my-template.xml”);
try
{
byte[] data = org.apache.commons.io.IOUtils.toByteArray(in);
InputSource src = new InputSource(new StringReader(new String(data)));
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(src);
}
finally
{
in.close();
}
Первая строка выводится как
<?xml version="1.0" encoding="UTF-16”?>
что мне нужно делать при разборе/вывода файла таким образом, что кодирование заголовка будет оставаться «UTF-8»?
Edit: За предложение данного, я изменил мой код
Document doc = null;
InputStream in = this.getClass().getClassLoader().getResourceAsStream(name);
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(in);
}
finally
{
in.close();
}
Но несмотря на то, первая линия моего входного элемента шаблона файла является
<?xml version="1.0" encoding="UTF-8"?>
, когда я выходной документ как a Строка, которую она производит
<?xml version="1.0" encoding="UTF-16"?>
как ель й линии. Вот что я использую для вывода «Doc» объект в виде строки ...
private String getDocumentString(Document doc)
{
DOMImplementationLS domImplementation = (DOMImplementationLS)doc.getImplementation();
LSSerializer lsSerializer = domImplementation.createLSSerializer();
return lsSerializer.writeToString(doc);
}
Привет, спасибо. Несмотря на это, первая строка моего шаблона документа по-прежнему выводится с заголовком кодировки «UTF-16» вместо «UTF-8». Возможно, это то, как я конвертирую объект Document в String, и я редактировал свой вопрос для включения. –