![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Разгильдяй |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
Есть код
[code=] public void sendXMLDocument( Document query ) { try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); trans.setOutputProperty( OutputKeys.METHOD, "xml" ); trans.setOutputProperty( OutputKeys.ENCODING, "KOI8-R" ); ByteArrayOutputStream byteArray = new ByteArrayOutputStream(); trans.transform( new DOMSource( query ), new StreamResult( new OutputStreamWriter( byteArray, "KOI8-R" ) ) ); send( byteArray.toString() ); } catch ( Exception e ) { e.printStackTrace(); } } [/CODE] В Java 1.4 все работало корректно. В Java 1.5 при сохранении получаю в заголовке XML encoding="KOI8-R", а русский текст записывается в кодировке UTF-8. Подскажите пожалуйста, в чем проблемма??? |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Сохраняет какой метод? send( byteArray.toString() );?
|
|||
|
||||
| Разгильдяй |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
Сохраняет
trans.transform( new DOMSource( query ), new StreamResult( new OutputStreamWriter( byteArray, "KOI8-R" ) ) ); send - отправляет. |
|||
|
||||
| Разгильдяй |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
вставка byteArray.toString("KOI8-R") не помогает... (
|
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Скорее всего у тебя проблемма в byteArray.toString()
То есть функция toString() скорее всего приводит к Юникоду. Для того чтобы возвращала в нужной кодировке используй byteArray.toString("Encoding") в твоем случае: byteArray.toString("KOI8-R") Добавлено @ 15:59 Апдейт: Тогда нужно еще подумать. |
|||
|
||||
| DarkDS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 748 Регистрация: 6.5.2003 Где: Таллинн, Эстония Репутация: 11 Всего: 16 |
Кстати... А посылать обязательно из строки? Может лудше из массив байтов посылать?
То есть переписать метод сенд, чтобы он примимал массив байтов и посылать
? Это сообщение отредактировал(а) DarkDS - 3.11.2004, 16:11 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Согласен с DarkDS, зачем byteArray, преобразовывать в строку? XML документ это вообще говоря уже бинарные данные, по сути эти данные конечно строковые, но они уже находятся в некой кодировке, и соответственно к преобразованиям кодировок относятся плохо. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Разгильдяй |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
Написал для отладки так
[code=] try { TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); trans.setOutputProperty( OutputKeys.METHOD, "xml" ); trans.setOutputProperty( OutputKeys.ENCODING, "KOI8-R" ); trans.transform( new DOMSource( query ), new StreamResult( new OutputStreamWriter( System.out, "KOI8-R" ) ) ); } catch ( Exception e ) { e.printStackTrace(); } [/CODE] Все равно сохраняет криво, русские символы в кодировке UTF-8. Вот в этом и проблема... |
|||
|
||||
| Разгильдяй |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 20.8.2004 Репутация: нет Всего: нет |
а по поводу оптимальности, прогу писал не я.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |