|
|
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Пишу 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); } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 11:17 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
м.б., юникс не в курсе "windows-1251" и хочет "cp1251"? -- Lacrima Mosa Est ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 11:21 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Вне зависимости от того, какую кодировку я проставляю внутри этого куска кода: 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) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:01 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
херово что у меня юникса под рукой нету :) -- Lacrima Mosa Est ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:04 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Тут недавно говорили , что PrintWriter косячит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:12 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
ИМХО Unix традиционно дружит с koi8-r. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:26 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
по вот этой сцылке, которую когда-то давал 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 пока ничего подходящего не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:43 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Да, кстати удобно, что в пятой джаве есть конструктор PrintWriter с кодировкой: PrintWriter pout = new PrintWriter("xml.xml","UTF-8"); , но хочется решить все теми средствами которые есть, тоесть 4ой джавой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:50 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
XAДа, кстати удобно, что в пятой джаве есть конструктор PrintWriter с кодировкой: PrintWriter pout = new PrintWriter("xml.xml","UTF-8"); , но хочется решить все теми средствами которые есть, тоесть 4ой джавой. А если так? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 12:55 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Всем спасибо, проблему решил. Вот последний рабочий вариант: 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 участникам ветки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 13:08 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
PS а у меня свой xml-writer написан :) -- Lacrima Mosa Est ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 13:15 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
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 участникам ветки. Я когда так сделал, у меня вот такой трабл случился, а у тебя все нормально? Какой трансформер и парсер испльзуешь? зы И вообще, достали уже эти траблы с кодировкой при переносе на другие платформы или если меняешь тот же парсер например! Буду жаловаться!:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 13:25 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Вот эту штуковину юзаю: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:06 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
упс пежжю.. Никакого Xerces2 Java Parser 2.4.0 Release не юзается. Юзался он в самом верхнем варианте кода(в этой ветке). Все что есть это: j2sdk1.4.2_04 с ней API JAXP 1.2 с ним Sun овский парсер Crimson . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:16 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
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.* отношения не имеет, это ведь парсер. Как все запутано в ентом мире ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:23 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
XAупс пежжю.. Никакого Xerces2 Java Parser 2.4.0 Release не юзается. Юзался он в самом верхнем варианте кода(в этой ветке). Все что есть это: j2sdk1.4.2_04 с ней API JAXP 1.2 с ним Sun овский парсер Crimson . Вот это похоже на правду :) Только херово, что Crimson с XML-Схемами не дружит, а с русским дружит, а Xerces наоборот ёпрст... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:27 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
А.Грасоff™PS а у меня свой xml-writer написан :) -- Lacrima Mosa Est Дай посмотрю. lordmayton@mail.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 14:29 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
Не могли бы подсказать мне еще сделать вывод в xml файл построчным, что-то не плучается. transformer.setOutputProperty(OutputKeys.ENCODING, "windows-1251"); transformer.transform(new DOMSource(doc), new StreamResult(new FileOutputStream(treeFile))); А то я с io.* пока еще не очень дружу, но у нас все впереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 16:15 |
|
||
|
Проблема с кодировкой при переносе построения xml файла на Unix
|
|||
|---|---|---|---|
|
#18+
А xml файл ты сам создаёш? Просто фенька в том, что наряду с обычными нодами в хмл существуют ещё текстовые ноды которые расположены между обычными и которые собственно и создают новые строки и прочее. Так что после каждого нода надо вставлять (может и не надо,но по крайней мере у меня работает) текстовый нод. Создаётся он методом Document.createTextNode("\n") (ну или не \n , а чем тебе удобно разделять строчки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2005, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=32908021&tid=2152976]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 390ms |

| 0 / 0 |
