XSLT преобразование и encoding

 
 
 
Сообщения:89
Нашел пример, отлично работает, но почему на 2008 r2 не хочет нормально с кодировками работать.
На os x работает, на windows 7 работает, но только в eclipse, как только в jar что-то противоестественное происходит
Подсовываю dom со значением элементов на русском
Версии java равные. is = IAppService.class.getResourceAsStream("/templates/report.xsl");
Что не так делаю?


public static String transformXLST(Document dom, InputStream is) {
		DOMOutputter outputter = new DOMOutputter();
		ByteArrayOutputStream out = new ByteArrayOutputStream();
		try {
			Transformer transformer = TransformerFactory.newInstance().newTransformer(new StreamSource(is)); //xslt
			transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			
			DOMSource domSource = new DOMSource(outputter.output(dom));
			StreamResult sr = new StreamResult(new OutputStreamWriter(out, "UTF-8"));
			
			transformer.transform(domSource, sr);
		} catch (TransformerConfigurationException e) {
			e.printStackTrace();
		} catch (TransformerException e) {
			e.printStackTrace();
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return out.toString();
	}

Dmitry
Изменен:24 окт 2016 20:03
 
 
Сообщения:1527
Quote:
Что не так делаю?

Полагаю, что Java здесь ни при чем, а проблема в system locale ОС. Нужно или через Панель управления -Региональные стандарты (Control Panel-Region and Language) изменить системную и пользовательскую локаль на русский язык, или запускать JVM с аргументами -Duser.country-Duser.language-Duser.variant, или установить локаль программно Locale.setDefault
 
 
Сообщения:89
Тоже подозреваю так, но это не выход.
Вдруг немецкий язык или еще какой? Поведение трансформера крайне странное

Dmitry
 
 
Сообщения:139
что значит "не работает" и "странное"? указываешь кодировку исходников при компиляции или нет?

 
 
Сообщения:89
все победил. return out.toString("UTF-8");

Dmitry
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет