UTF-8 Проблема в разборе XML - PullRequest
3 голосов
/ 14 марта 2012

Я использую следующие коды для преобразования содержимого XML в UTF-8, но они не работают должным образом:

1

InputStream is = new ByteArrayInputStream(strXMLAlert.getBytes("UTF-8"));
Document doc = db.parse(is); 

2

InputSource is = new InputSource(new ByteArrayInputStream(strXMLAlert.getBytes()));
is.setCharacterStream(new StringReader(strXMLAlert));
is.setEncoding("UTF-8");
Document doc = db.parse(is);

1 Ответ

5 голосов
/ 02 июня 2012

Нам, вероятно, понадобится немного больше информации, чтобы правильно ответить на вопрос. Например, какую проблему вы видите? Какую версию Java вы используете?

Однако, расширив свой первый пример до

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
String strXMLAlert = "<a>永</a>";
InputStream is = new ByteArrayInputStream(strXMLAlert.getBytes("UTF-8"));
Document document = db.parse(is);
Node item = document.getDocumentElement().getChildNodes().item(0);
String nodeValue = item.getNodeValue();
System.out.println(nodeValue);

В этом примере в строке есть китайский символ. Успешно распечатывает

Ваш второй пример также должен работать, хотя вы предоставляете контент дважды. Либо предоставьте его в виде набора байтов и предоставьте кодировку, либо просто предоставьте его в виде символов (StringReader), и вам не нужно кодирование (поскольку в качестве символов оно уже декодировано из байтов в символы).

...