powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT: как получить UTF-8 (java создает UTF-16)
6 сообщений из 6, страница 1 из 1
XSLT: как получить UTF-8 (java создает UTF-16)
    #37772793
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
борюсь с java пока безуспешно - из-за того что она автоматом сохраняет результат трансформации в UTF-16 она автоматически конвертит некоторые символы - а мне этого ненужно

делаю так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
File datafile = null;
		File xsltfile = null;
		File resfile = null;
		OutputStream out = null;

		try {
			datafile = TempFileManager.createTempFile("transform_data", "."	+ ext);
			FileWriter fw = new java.io.FileWriter(datafile);
			fw.write(data);
			fw.close();


			xsltfile = TempFileManager.createTempFile("transform_xslt", "."	+ ext);
			fw = new java.io.FileWriter(xsltfile);
			fw.write(xslt);
			fw.close();
			
			
			resfile = TempFileManager.createTempFile("res", "." + ext);
			out = new FileOutputStream(resfile);
			
			Source xmlSource = new StreamSource(new InputStreamReader(new FileInputStream(datafile), "UTF-8"));
			Source xsltSource = new StreamSource(new InputStreamReader(new FileInputStream(xsltfile), "UTF-8"));

			TransformerFactory transFact = TransformerFactory.newInstance( );
			Transformer trans = transFact.newTransformer(xsltSource);
			trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			trans.transform(xmlSource, new javax.xml.transform.stream.StreamResult(out));

			datafile.delete();
			xsltfile.delete();
			return resfile;
		} catch (Exception e) {
			System.out.println("Ошибка DoXsltTransform: " + e.getLocalizedMessage());
			resfile.delete();
			return null;
		} finally {
			datafile.delete();
			xsltfile.delete();
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}


но результат всеравно UTF-16, а мне надо UTF-8
...
Рейтинг: 0 / 0
XSLT: как получить UTF-8 (java создает UTF-16)
    #37772958
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделал

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
private File DoXsltTransform(String data, String xslt, String ext) {
		File resfile = null;
	
		xslt = xslt.trim().replaceFirst("^([\\W]+)<", "<");
		
		TransformerFactory factory = TransformerFactory.newInstance();
		try {
		  StreamSource xslStream = new StreamSource(xslt);
		  Transformer transformer = factory.newTransformer(xslStream);
	
		  StreamSource in = new StreamSource(data);
		  transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
			
		  resfile = TempFileManager.createTempFile("res", "." + ext);
		  OutputStreamWriter outFile = new OutputStreamWriter(new FileOutputStream(resfile), "UTF-8");
		  transformer.transform(in, new javax.xml.transform.stream.StreamResult(outFile));

			return resfile;
		} catch (Exception e) {
			System.out.println("Ошибка DoXsltTransform: " + e.getLocalizedMessage());
			resfile.delete();
			return null;
		}
	}



но результат почемуто все время UTF-16
Помогите
...
Рейтинг: 0 / 0
XSLT: как получить UTF-8 (java создает UTF-16)
    #37773413
spПеределал
но результат почемуто все время UTF-16
Помогите

у меня UTF-8. Как проверяешь?
...
Рейтинг: 0 / 0
XSLT: как получить UTF-8 (java создает UTF-16)
    #37774083
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
календареведspПеределал
но результат почемуто все время UTF-16
Помогите

у меня UTF-8. Как проверяешь?

открываю результирующий файл, а там в заголовке - UTF-16
...
Рейтинг: 0 / 0
XSLT: как получить UTF-8 (java создает UTF-16)
    #37774363
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sp,

А если вставить в заголовок xslt что-нить типа:
Код: xml
1.
2.
3.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output encoding="UTF-8"/>
...
Рейтинг: 0 / 0
XSLT: как получить UTF-8 (java создает UTF-16)
    #37774450
spоткрываю результирующий файл, а там в заголовке - UTF-16
Конкретнее - что там написано? А что на самом деле - какая кодировка символов?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT: как получить UTF-8 (java создает UTF-16)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]