Ранее, чтобы читать XML в кодировке UTF-8 через xstream, я использую DomDriver следующим образом:
XStream xStream = new XStream(new DomDriver("UTF-8"));
Однако позже я понимаю, что это ОЧЕНЬ медленно.Я использую следующий способ:
Оптимизация скорости загрузки xstream
По крайней мере, это прекрасно работает.
Однако позже я реализую ту же техникуне может применяться для написания XML.Я получу все ???
Это последний работающий код, использующий DomDriver во время записи
public static boolean toXML(Object object, File file) {
XStream xStream = new XStream(new DomDriver("UTF-8"));
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(file);
xStream.toXML(object, outputStream);
}
catch (Exception exp) {
log.error(null, exp);
return false;
}
finally {
if (false == close(outputStream)) {
return false;
}
outputStream = null;
}
return true;
}
Приведенный выше код работает нормально.Чтобы соответствовать методу read , который не использует DomDriver, я изменяю код на
public static boolean toXML(Object object, File file) {
XStream xStream = new XStream();
OutputStream outputStream = null;
Writer writer = null;
try {
outputStream = new FileOutputStream(file);
writer = new OutputStreamWriter(outputStream, Charset.forName("UTF-8"));
xStream.toXML(object, outputStream);
}
catch (Exception exp) {
log.error(null, exp);
return false;
}
finally {
if (false == close(writer)) {
return false;
}
if (false == close(outputStream)) {
return false;
}
writer = null;
outputStream = null;
}
return true;
}
На этот раз все мои китайские иероглифы изменяются на ???
Могу ли я знать, что я сделал неправильно?