У меня есть эта Java-программа, в которой я с помощью TransformerFactory преобразую строку XML, полученную из базы данных SQL Server, и записываю ее в файл, а затем использую этот файл для создания PDF.
Дело в том, что он работает нормально, когда я выполняю его с NetBeans, но если я выполняю JAR в папке проекта dist, я получаю «Недопустимый байт 2 из 4-байтовой последовательности UTF-8».
После изменения кодировки строки XML на UTF-8 теперь она отлично работает и из jar-файла.
Так что мой вопрос: почему это работает при запуске проекта?в NetBeans, но не из файла JAR до изменения кодировки?
Пробовали это только в Windows.
Код:
Вот запрос SQL Server (оригинал):
SQLXML xml = null;
String xmlString = "";
while (rs.next()){
xml = rs.getSQLXML(1);
xmlString = xml.getString();
}
return xmlString;
... и модифицировано:
SQLXML xml = null;
String xmlString = "";
while (rs.next()){
xml = rs.getSQLXML(1);
// Note explicit UTF-8 encoding specified
xmlString = new String(xml.getString().getBytes(),"UTF8");
}
return xmlString;
А вот преобразование:
public static void serialize(Document doc, OutputStream out) throws Exception {
TransformerFactory tfactory = TransformerFactory.newInstance();
try {
Transformer serializer = tfactory.newTransformer();
serializer.setOutputProperty("indent", "yes");
serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
serializer.transform(new DOMSource(doc), new StreamResult(out));
} catch (TransformerException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}