Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT: как получить UTF-8 (java создает UTF-16) / 6 сообщений из 6, страница 1 из 1
26.04.2012, 17:11:19
    #37772793
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSLT: как получить UTF-8 (java создает UTF-16)
борюсь с 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
26.04.2012, 18:59:49
    #37772958
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSLT: как получить UTF-8 (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.
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
27.04.2012, 09:29:36
    #37773413
XSLT: как получить UTF-8 (java создает UTF-16)
spПеределал
но результат почемуто все время UTF-16
Помогите

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

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

открываю результирующий файл, а там в заголовке - UTF-16
...
Рейтинг: 0 / 0
27.04.2012, 14:55:14
    #37774363
sanBez
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XSLT: как получить UTF-8 (java создает UTF-16)
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
27.04.2012, 15:23:07
    #37774450
XSLT: как получить UTF-8 (java создает UTF-16)
spоткрываю результирующий файл, а там в заголовке - UTF-16
Конкретнее - что там написано? А что на самом деле - какая кодировка символов?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / XSLT: как получить UTF-8 (java создает UTF-16) / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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