Мне необходимо распарсить xml, который содержит русские буквы. Он лежит в postgresql базе. На windows проблем с этим не возникло, использую
doc.getElementsByTagNameNS ("*","название_тега");
Но когда запускаю ту же программу на linux, элементы не находятся.
Приложение написано на Spring (App extends SpringBootServletInitializer) и запущено под tomcat(нужна именно конфигурация war).
Ниже приведен код считывания xml. Есть подозрение что проблема с кодировкой, но как ее решить не знаю. Подскажите пожалуйста.
public Document readXml(String xml) throws ParserConfigurationException, IOException, SAXException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder db = factory.newDocumentBuilder();
InputStream is = new ByteArrayInputStream(xml.getBytes("UTF-8"));
Document document = db.parse(is);
return document;
}
UPD:
Сейчас проверила как он пишет в файл - кодировка KOI8-R. То есть в поле названия тега записывается не UTF-8, а KOI8-R, и поэтому не может найти подходящий тэг.
Вот такой костыль с перекодировкой русских слов решил вопрос, но я уверена есть нормальное решение. Пусть пока полежит здесь
public static String magic(String str) {
byte ptext[] = new byte[0];
try {
ptext = str.getBytes("KOI8_R");
String value = new String(ptext, "UTF-8");
return value;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
подскажите пожалуйста как я могу обратиться из андроид программы к базе данных MySql на сервере и заменить данные в таблицы tbl_menu в столбце price на другие
Всем привет, хочу прочитать файл по строкам в Spring Boot приложенииНаписал такой код