Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Encoding / 12 сообщений из 12, страница 1 из 1
20.06.2007, 13:30:57
    #34607613
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
У меня есть класс. Запускаю его вот так:
%JAVA_HOME%\bin\java.exe -showversion CSmallCmpCompiler .\official\dsrc\text\russian\txt .\text\russian

Он берет все текстовые файлики из \official\dsrc\text\russian\txt по определенному алгоритму обрабатывает их и выплевывает в .\text\russian. Выплевывает их в кодировке ANSI, а мне нужно UTF8.

Подскажите плиз, где мне задать кодировку и как лучше сделать. Вот исходник:

Код: plaintext
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
 import  java.io.*;

 public   class  CSmallCmpCompiler
{

     public  CSmallCmpCompiler()
    {
    }

     public   static   void  main(String args[])
         throws  IOException
    {
        String s = args[ 0 ];
        String s1 = args[ 1 ];
        File file =  new  File(s1 + "\\CSmallCmpCompiler.log");
        FileOutputStream fileoutputstream =  new  FileOutputStream(file);
        PrintStream printstream =  new  PrintStream(fileoutputstream);
        File file1 =  new  File(s);
         if (!file1.exists() || !file1.isDirectory())
        {
            printstream.println("*****  " + s + "  does not exist or is not a dyrectory.  ");
             return ;
        }
        File file2 =  new  File(s);
         if (!file2.exists() || !file2.isDirectory())
        {
            printstream.println("*****  " + s1 + "  does not exist or is not a dyrectory.  ");
             return ;
        }
        OnlyExt onlyext =  new  OnlyExt("txt");
        String args1[] = file1.list(onlyext);
        printstream.println("\u041Fр\u043Eгра\u043C\u043Cа \u043A\u043E\u043C\u043Fи" +
"\u043B\u044Fции \u043Cе\u043B\u043Aий cmp-фа" +
"й\u043B\u043Eв из \u043Fа\u043F\u043Aи "
 + s);
        printstream.println("Резу\u043B\u044Cтат в " + s1);
        printstream.println(s + "  ---  " + args1.length + "  фай\u043B\u043Eв");
        CSmallCmpCompiler1 csmallcmpcompiler1 =  new  CSmallCmpCompiler1();
         for ( int  i =  0 ; i < args1.length; i++)
        {
             if ((i /  5 ) *  5  == i && i >=  1 )
            {
                System.out.println(i + "  files are compiled  (" + ( 100  * i) / args1.length + " %).");
            }
            String s2 = s + "\\" + args1[i];
            String s3 = s1 + "\\" + args1[i];
            int j = s3.lastIndexOf("txt");
            if(j != 0)
            {
                String s4 = s3.substring(0, j);
                String s5 = s4 + "cmp";
                csmallcmpcompiler1.compile(s2, s5, printstream);
            }
        }

        printstream.println(" \u041Eбраб\u043Eта\u043D\u043E " + csmallcmpcompiler1.donefilecount + "  фай\u043B\u043Eв");
        System.out.println();
        printstream.close();
    }
}
...
Рейтинг: 0 / 0
20.06.2007, 14:08:19
    #34607766
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
Код: plaintext
 new  PrintStream(fileoutputstream, true, "UTF8");
...
Рейтинг: 0 / 0
20.06.2007, 14:12:09
    #34607784
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
ёще лучше
Код: plaintext
 new  PrintStream( new  BufferedOutputStream(fileoutputstream, true, "UTF8"));
...
Рейтинг: 0 / 0
20.06.2007, 14:13:59
    #34607791
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
пробовал! не заработало
...
Рейтинг: 0 / 0
20.06.2007, 14:18:36
    #34607807
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
а второй вариант не компелируется
...
Рейтинг: 0 / 0
20.06.2007, 14:23:02
    #34607826
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
D:\work\SKELET_TRANSLATION>javac CSmallCmpCompiler.java
CSmallCmpCompiler.java:20: cannot resolve symbol
symbol : constructor BufferedOutputStream (java.io.FileOutputStream,boolean,java.lang.String)
location: class java.io.BufferedOutputStream
PrintStream printstream = new PrintStream(new BufferedOutputStream(fileoutputstream, true, "UTF8"));
^
1 error

заменил
PrintStream printstream = new PrintStream(fileoutputstream);
на
PrintStream printstream = new PrintStream(new BufferedOutputStream(fileoutputstream, true, "UTF8"));
...
Рейтинг: 0 / 0
20.06.2007, 14:28:57
    #34607845
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
andrei77а второй вариант не компелируется
версия JDK какая?
...
Рейтинг: 0 / 0
20.06.2007, 14:31:40
    #34607854
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
1.4.2
...
Рейтинг: 0 / 0
20.06.2007, 14:33:14
    #34607865
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
сорри
PrintStream printstream = new PrintStream(new BufferedOutputStream(fileoutputstream), true, "UTF8");
так должно работать полюбому :)
...
Рейтинг: 0 / 0
20.06.2007, 14:40:37
    #34607891
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
блин все равно он её в ANSI сохраняет...
я написал вот такую штуку...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 import  java.io.*;

 public   class  XmlEncoding {
     public   static   void  main(String[] args)  throws  IOException {
         FileInputStream in =  new  FileInputStream("D:\\ptc\\proeWildfire4.0\\text\\russian\\favorites.cmp");
         InputStreamReader isr =  new  InputStreamReader(in, "cp1251");
         FileOutputStream fos =  new  FileOutputStream("D:\\ptc\\proeWildfire4.0\\text\\russian\\favorites_.cmp");
         Writer out =  new  OutputStreamWriter(fos, "UTF8"); 

         int  c;

         while  ((c = isr.read()) != - 1 )
           
              out.write(c);
              
            isr.close();
            out.close();
           in.close();
          fos.close();       
        
    }
}

работает

но мне нужно чтобы там сработало...
в статье Русские буквы Java и не только написано:
авторТак как метода установки кодировки в PrintStream нет... это поэтому ты спросил про версию java?
...
Рейтинг: 0 / 0
20.06.2007, 14:47:11
    #34607928
zalexaka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
andrei77
в статье Русские буквы Java и не только написано:
авторТак как метода установки кодировки в PrintStream нет... это поэтому ты спросил про версию java?
тогда что это?
...
Рейтинг: 0 / 0
20.06.2007, 14:49:08
    #34607944
andrei77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Encoding
видел
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Encoding / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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