Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java tools & IDE's > NetBeans 5.5


Автор: maxlab 13.2.2007, 10:21
Здравствуйте уважаемые

Наступил на очередные грабли smile 

Претваряя в жизнь свой супер-пупер-мега-проект на яве, приходится скакать с одной ОС на другую... т.е с виндовоза на линукс и обратно. Соответственно текст одного класса может набираться и редактироваться в разных ОС. ИДЕ везде одинаковая - НетБинс 5.5 В результате не всегда правильно отображаются русские символы в исходных кодах. Хотя в опциях нетбинса в енкодинг я выставил УТФ-8. Причем закономерности какой либо я не заметил. Как бороться с таким явлением? Может тулза есть какая для приведения к единой кодировке без искажения текста. Кстати, когда я пробовал Еклипс там таких моментов не замечал. 

Автор: Hidrag 13.2.2007, 11:21
 smile 
я и в нетбинсе не замечал, сам часто скачу с винды на линукс с одним и тем же проектом, при этом винда у меня английская (2003) а линукс русской сборки (асплинух 11)...

Автор: maxlab 13.2.2007, 14:41
странно... однако smile


У Вас наверное и там и там одна кодировка СР1251 и в НетБинсе кодировка по дефолту.
А у меня в мандриве Уникод, а в винде СР1251. Отсюда и траблы

Автор: LSD 13.2.2007, 18:24
Ты вначале установил кодировку для исходников, а потом создал классы. Или вначале написал классы, и потом поменял кодировку у исходников?

Автор: powerOn 13.2.2007, 20:35
Цитата(maxlab @  13.2.2007,  14:41 Найти цитируемый пост)
А у меня в мандриве Уникод, а в винде СР1251. Отсюда и траблы


ну так выстави везде юникод. 
1) В свойствах файла.
2) В Advanced Options -> Java Source.

При этом желательно это сделать и на Windows и на Linux, до сохранения файлов. Чтобы вопросов потом было меньше.  smile 

Автор: maxlab 14.2.2007, 12:25
Цитата(LSD @ 13.2.2007,  18:24)
Ты вначале установил кодировку для исходников, а потом создал классы. Или вначале написал классы, и потом поменял кодировку у исходников?


сейчас уже трудно вспомнить... что было раньше  smile 

И пытался сделать как powerOn говорит. Текст искажается

Короче, тулза нужно которая исходник принудительно конвертит из одной кодировки в другую. Ручками уже не поправить, возни много

Автор: LSD 14.2.2007, 12:55
Цитата(maxlab @  14.2.2007,  12:25 Найти цитируемый пост)
Короче, тулза нужно которая исходник принудительно конвертит из одной кодировки в другую. Ручками уже не поправить, возни много

Ну так напиши, тут делов то на 15 минут.
Код
  public static void decodeDirectory(File inDir, File outDir, Charset inCharset, Charset outCharset) throws IOException
  {
    File[] files = inDir.listFiles();
    for(File file : files)
    {
      if(file.isDirectory())
      {
        File out = new File(outDir, file.getName());
        out.mkdirs();
        decodeDirectory(file, out, inCharset, outCharset);
      }
      else
      {
        File out = new File(outDir, file.getName());
        decodeFile(file, out, inCharset, outCharset);
      }
    }
  }

  public static void decodeFile(File inFile, File outFile, Charset inCharset, Charset outCharset) throws IOException
  {
    Reader reader = new InputStreamReader(new FileInputStream(inFile), inCharset);
    Writer writer = new OutputStreamWriter(new FileOutputStream(outFile), outCharset);
    char[] buffer = new char[64 * 1024];
    int read;
    while((read = reader.read(buffer)) != -1)
      writer.write(buffer, 0, read);
    reader.close();
    writer.close();
  }

Автор: powerOn 14.2.2007, 13:30
Цитата(maxlab @  14.2.2007,  12:25 Найти цитируемый пост)
И пытался сделать как powerOn говорит. Текст искажается

Значит ты что-то не так сделал. У меня все работает, я сам под двумя системами код пишу.

Автор: maxlab 14.2.2007, 15:53
LSD спасибо за код. На досуге оформлю... а если с системой плагинов к нетбинсу разберусь, то оформим как фичу к ИДЕ smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)