从字节数组创建新字符串以及从字符串返回字节数组时,您应该始终指定字符集名称。
如果没有,将采用您系统的默认字符集,可能会在任何地方产生问题......
代替
new String(myByteArray);
//... and...
myString.getBytes();
你应该使用
new String(myByteArray, "UTF-8");
//... and...
myString.getBytes("UTF-8");
例如
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(xmlDocument);
transformer.transform(source, result);
return result.getWriter().toString().getBytes("UTF-8");
从 Java 1.6 开始,您可以指定一个 Charset而不是包含 charset 名称的 String: