powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при переносе построения xml файла на Unix
19 сообщений из 19, страница 1 из 1
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907681
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу xml файл. Все отлично работает на Windows XP.
Компилю jBuilder ом, переношу на Unix, получаю:

<?xml version="1.0" encoding="windows-1251"?>
<tree-set>
<tree name="treedo">
<node href="/definitions/rubDefinition.jsp?oNode-treedo=1"
id="1" label="?????? ??????">
<node href="/definitions/rubDefinition.jsp?oNode-treedo=3"
... итд

Вопрос: куда бежать. за что хвататься.
Вот класс, который пишет файл:


import org.w3c.dom.*;
import java.io.*;
import org.apache.xml.serialize.DOMSerializer;
import org.apache.xml.serialize.XMLSerializer;
import org.apache.xml.serialize.OutputFormat;

public class XMLFileCreater {
public static void main(String[] args) {
}
public void createXmlFile(String fullPath,Document doc) throws IOException{//Create file with given path using given Document. Encoding windows-1251 use default
File treeFile= new File (fullPath);
FileOutputStream streamToFile=new FileOutputStream(treeFile);
PrintWriter prt= new PrintWriter(streamToFile);

OutputFormat format = new OutputFormat(doc, "windows-1251", true);
format.setIndenting(true);
DOMSerializer serializer = new XMLSerializer(prt, format);
Element root=doc.getDocumentElement();
serializer.serialize(root);

}
}
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907694
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
м.б., юникс не в курсе "windows-1251" и хочет "cp1251"?

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907789
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вне зависимости от того, какую кодировку я проставляю внутри этого куска кода:
OutputFormat format = new OutputFormat(doc, "windows-1251", true);

Получаю на юниксе это:
<?xml version="1.0" encoding="windows-1251"?>
<tree-set>
<tree name="treedo">
<node href="/definitions/rubDefinition.jsp?oNode-treedo=1"
id="1" label="?????? ??????">


В зависимости от указанной кодировки изменяется только:
<?xml version="1.0" encoding="windows-1251"?>

Пробовал:

UTF-8
KOI8-R
windows-1251
Cp866

Результат одинаковый (см. выше).

Попробовал
Outputmat format = new OutputFormat(doc, "Cp1251");

Получил:

java.io.UnsupportedEncodingException: CP1251
at org.apache.xml.serialize.Encodings.getEncodingInfo(Unknown Source)
at org.apache.xml.serialize.OutputFormat.getEncodingInfo(Unknown Source)
at org.apache.xml.serialize.BaseMarkupSerializer.prepare(Unknown Source)
at org.apache.xml.serialize.BaseMarkupSerializer.serialize(Unknown Source)
at entities.XMLFileCreater.createXmlFile(XMLFileCreater.java:20)
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907801
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
херово что у меня юникса под рукой нету :)

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907828
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут недавно говорили , что PrintWriter косячит.
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907874
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО Unix традиционно дружит с koi8-r.
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907934
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по вот этой сцылке, которую когда-то давал wessen:

/topic/122168&hl

Переписал код:

import org.w3c.dom.*;
import java.io.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
public class XMLFileCreater {
public static void main(String[] args) {
}
public void createXmlFile(String fullPath,Document doc) throws Exception{
File treeFile= new File (fullPath);


Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "Сp1251");

transformer.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(treeFile)));
}
}

Стало более интересно. Ушли вопросы..

<?xml version="1.0" encoding="UTF-8"?>
<tree-set><tree name="treedo"><node href="/definitions/rubDefinition.jsp?oNode-treedo=1" id="1" label="Р"РчС_РчР_Р_ С_С_Р+С_РёРє"><node href="/defi......
итд


Это на юниксе. На винде пока не пробовал.
Щас попробую кои8-Р

Обшариваю
http://onesearch.sun.com/search/onesearch/index.jsp?qt=OutputFormat&rf=0&rt=1&nh=10&cs=0&st=41&col=all

пока ничего подходящего не нашел.
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907961
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, кстати удобно, что в пятой джаве есть конструктор PrintWriter с кодировкой:
PrintWriter pout = new PrintWriter("xml.xml","UTF-8"); , но хочется решить все теми средствами которые есть, тоесть 4ой джавой.
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32907982
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XAДа, кстати удобно, что в пятой джаве есть конструктор PrintWriter с кодировкой:
PrintWriter pout = new PrintWriter("xml.xml","UTF-8"); , но хочется решить все теми средствами которые есть, тоесть 4ой джавой.
А если так?

Код: plaintext
1.
2.
3.
OutputStreamWriter out =  new  OutputStreamWriter(
   new  BufferedOutputStream( new  FileOutputStream( new  File("xml.xml"))), "utf-8"
);
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908021
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, проблему решил.
Вот последний рабочий вариант:


import org.w3c.dom.*;
import java.io.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
public class XMLFileCreater {
public static void main(String[] args) {
}
public void createXmlFile(String fullPath,Document doc) throws Exception{//Create file with given path using given Document. Encoding windows-1251 use default
File treeFile= new File (fullPath);


Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "windows-1251");
transformer.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(treeFile)));

}
}


Только почему-то все выводится в одну строчку, но с этим разберусь.
Главное. Работает.

З.Ы. Рабочий день прошел не зря:) Еще раз 10x участникам ветки.
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908050
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS а у меня свой xml-writer написан :)

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908100
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XAВсем спасибо, проблему решил.
Вот последний рабочий вариант:


import org.w3c.dom.*;
import java.io.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
public class XMLFileCreater {
public static void main(String[] args) {
}
public void createXmlFile(String fullPath,Document doc) throws Exception{//Create file with given path using given Document. Encoding windows-1251 use default
File treeFile= new File (fullPath);


Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "windows-1251");
transformer.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(treeFile)));

}
}


Только почему-то все выводится в одну строчку, но с этим разберусь.
Главное. Работает.

З.Ы. Рабочий день прошел не зря:) Еще раз 10x участникам ветки.

Я когда так сделал, у меня вот такой трабл случился, а у тебя все нормально? Какой трансформер и парсер испльзуешь?

зы И вообще, достали уже эти траблы с кодировкой при переносе на другие платформы или если меняешь тот же парсер например! Буду жаловаться!:)
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908205
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эту штуковину юзаю: Xerces2 Java Parser 2.4.0 Release
Эт отсюда:
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;


API JAXP 1.2 и Sun овский парсер Crimson
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908230
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс пежжю..

Никакого Xerces2 Java Parser 2.4.0 Release не юзается. Юзался он в самом верхнем варианте кода(в этой ветке).

Все что есть это:

j2sdk1.4.2_04
с ней API JAXP 1.2
с ним Sun овский парсер Crimson .
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908244
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XAВот эту штуковину юзаю: Xerces2 Java Parser 2.4.0 Release
Эт отсюда:
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;


API JAXP 1.2 и Sun овский парсер Crimson

Хм... не понял, javax.xml.* это и есть JAXP, и кним должен быть прикручен парсер и трансформер...
Да и Xerces к пакету javax.xml.transform.* отношения не имеет, это ведь парсер. Как все запутано в ентом мире ...
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908257
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XAупс пежжю..

Никакого Xerces2 Java Parser 2.4.0 Release не юзается. Юзался он в самом верхнем варианте кода(в этой ветке).

Все что есть это:

j2sdk1.4.2_04
с ней API JAXP 1.2
с ним Sun овский парсер Crimson .

Вот это похоже на правду :)
Только херово, что Crimson с XML-Схемами не дружит, а с русским дружит, а Xerces наоборот ёпрст...
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908266
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А.Грасоff™PS а у меня свой xml-writer написан :)

--
Lacrima Mosa Est

Дай посмотрю.

lordmayton@mail.ru
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908610
xa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могли бы подсказать мне еще сделать вывод в xml файл построчным, что-то не плучается.

transformer.setOutputProperty(OutputKeys.ENCODING, "windows-1251");
transformer.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(treeFile)));


А то я с io.* пока еще не очень дружу, но у нас все впереди.
...
Рейтинг: 0 / 0
Проблема с кодировкой при переносе построения xml файла на Unix
    #32908836
Naug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А xml файл ты сам создаёш? Просто фенька в том, что наряду с обычными нодами в хмл существуют ещё текстовые ноды которые расположены между обычными и которые собственно и создают новые строки и прочее. Так что после каждого нода надо вставлять (может и не надо,но по крайней мере у меня работает) текстовый нод. Создаётся он методом Document.createTextNode("\n") (ну или не \n , а чем тебе удобно разделять строчки)
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема с кодировкой при переносе построения xml файла на Unix
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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