Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Кодировка в JAVA / 9 сообщений из 9, страница 1 из 1
06.02.2007, 09:49:03
    #34308185
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
Привет. У меня есть xml. Она не открывается потомучто некоторые значения элементов в кодировке, помоему UTF-8... Вообщем тема. Если я открываю через ноутпэд и схораняю как файл в формате UTF-8, то мой xml-процессор понимает и читает все это. как тоже самое написать на java, пишу следующий код:

import java.io.*;

public class CopyBytes {
public static void main(String[] args) throws IOException {
File inputFile = new File("erp.xml");
File outputFile = new File("erp1.xml");

FileInputStream in = new FileInputStream(inputFile);
InputStreamReader isr = new InputStreamReader(in, "UTF-8");
FileOutputStream out = new FileOutputStream(outputFile);
int c;

while ((c = isr.read()) != -1)
out.write(c);

isr.close();
out.close();
}
}


Но кроме символов эээээээ ничего не выводит, что я делаю не так?
...
Рейтинг: 0 / 0
06.02.2007, 10:16:10
    #34308275
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
andrei77
Но кроме символов эээээээ ничего не выводит, что я делаю не так?
Мне кажется, вы не думали над тем, зачем в вашем коде используется
InputStreamReader isr = new InputStreamReader(in, "UTF-8").
И чего не хватает при выводе потока.
...
Рейтинг: 0 / 0
06.02.2007, 10:44:50
    #34308390
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
не хватает выводв в UTF-8, я делаю так:

import java.io.*;

public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("erp.xml");
InputStreamReader isr = new InputStreamReader(in, "UTF8");
FileOutputStream fos = new FileOutputStream("mllll.txt");
Writer out = new OutputStreamWriter(fos, "UTF8");
int c;

while ((c = isr.read()) != -1)
out.write(c);


in.close();
isr.close();
fos.close();
out.close();
}
}
...
Рейтинг: 0 / 0
06.02.2007, 10:54:00
    #34308432
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
Да, приблизительно так.
Не забывайте про Flush.
Надеюсь лишь, что вы не будете так делать в реальном приложении и пример — исключительно для опыта в сохранении файлов с разными кодировками ;)
...
Рейтинг: 0 / 0
06.02.2007, 11:06:54
    #34308488
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
а почему оно так тоже не работает?
...
Рейтинг: 0 / 0
06.02.2007, 11:11:17
    #34308513
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
andrei77а почему оно так тоже не работает?
Может быть вам следует начать с основ программирования?
Или основ Java. Существует большой количество хороших книг.
Вас научат различать потоки ввода/вывода и механизмы чтения из потоков.
Вы поймете, что следует закрывать сначала, а что потом.
...
Рейтинг: 0 / 0
06.02.2007, 11:38:30
    #34308635
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
я и так об этом знаю :)
конечно не так хорошо
но всеже...

думаю, что эти штуки закрывать не надо было просто, а только потоки
...
Рейтинг: 0 / 0
06.02.2007, 11:42:16
    #34308650
raidan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
Достаточно лишь изменить порядок
Код: plaintext
1.
2.
3.
4.
        out.close();
        isr.close();
        in.close();
        fos.close();
...
Рейтинг: 0 / 0
06.02.2007, 12:01:16
    #34308736
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка в JAVA
книжки у меня всегда под рукой. но вопросы остаются

вот сделал, все отлично переводится

import java.io.*;

public class CopyBytes {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("erp.xml");
InputStreamReader isr = new InputStreamReader(in, "cp1251");
FileOutputStream fos = new FileOutputStream("mllll.txt");
Writer out = new OutputStreamWriter(fos, "UTF16");

int c;

while ((c = in.read()) != -1)
out.write(c);

in.close();
fos.close();

}
}



Только не понимаю, как сделать аналогично операции в блокноте открыть и сохранит в UTF8

В какой кодировке нужно читать?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Кодировка в JAVA / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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