getXmlEncoding () выдает неправильный вывод - PullRequest
1 голос
/ 03 июля 2019

Я хочу использовать Java для получения стиля кодирования файла XML:

<?xml version="1.0" encoding="UTF-8"?> 
<company>
	<staff>
		<firstname>yong</firstname>
		<lastname>mook kim</lastname>
		<nickname>ä</nickname>
		<salary>100000</salary>
	</staff>
</company>

со следующим кодом Java:

public class SimpleXml 
{
    public static void main(String[] args) 
    {
        try
        {
            File inputFile = new File(PathInfo.getTestXmlFile());
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(inputFile);
            doc.getDocumentElement().normalize();
            System.out.println("XmlEncoding: " + doc.getXmlEncoding());
            System.out.println("InputEncoding: " + doc.getInputEncoding());

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

и вывод, который я получаю: XmlEncoding: ISO-8859-1 InputEncoding: UTF-8 И я действительно не могу понять, почему я получаю ISO-8859-1, когда в заголовке XML есть UTF-8?

1 Ответ

0 голосов
/ 03 июля 2019

Код работает нормально.

XML-файл: new.xml

<?xml version="1.0" encoding="UTF-8"?>
<company>
    <staff>
        <firstname>yong</firstname>
        <lastname>mook kim</lastname>
        <nickname>ä</nickname>
        <salary>100000</salary>
    </staff>
</company>

Это код:

 public class XmlToJava {

    public static void main(String[] args)  {
        try {
            File file = new File("C:\\new.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(file);
            doc.getDocumentElement().normalize();
            System.out.println("XmlEncoding: " + doc.getXmlEncoding());
            System.out.println("InputEncoding: " + doc.getInputEncoding());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Выход (Eclipse IDE):

XmlEncoding: UTF-8
InputEncoding: UTF-8

Но я предполагаю, что какой-то другой стандарт кодирования, которому может следовать ваша IDE. Проверьте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...