xml解析中的UTF-8问题

div*_*ivz 3 java utf-8 xml-parsing

我使用以下代码将XML内容转换为UTF-8,但它们无法正常工作:

1.

InputStream is = new ByteArrayInputStream(strXMLAlert.getBytes("UTF-8"));
Document doc = db.parse(is); 
Run Code Online (Sandbox Code Playgroud)

2.

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

Mik*_*ell 5

我们可能需要更多信息来正确回答这个问题.例如,你看到了什么问题?您运行的是哪个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);
Run Code Online (Sandbox Code Playgroud)

在此示例中,字符串中有一个中文字符.它成功打印出来

?
Run Code Online (Sandbox Code Playgroud)

您的第二个示例也应该有效,尽管您提供的内容是两次.要么将它作为一组字节提供并提供编码,要么只提供它作为字符(StringReader)并且您不需要编码(因为作为字符,它已经从字节解码为字符).