На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> При чтении русских букв , получаю ????? ?? ???
    Добрый день уважаемые.
    Подскажите, что пропустил? Почему при чтении из файла, где присутствуют русские буквы получаю знаки вопроса?
    ExpandedWrap disabled
       try(SeekableByteChannel fChan = Files.newByteChannel(Paths.get("C:\\log")))
              {
                  
                  
                  ByteBuffer mBuf = ByteBuffer.allocate(512);
                  
                  
                  do
                  {
                      count = fChan.read(mBuf);
                      
                      
                      if(count != -1)
                      {
                          
                          mBuf.rewind();
                          
                          
                          for(int i= 0; i < count; i++) System.out.print((char)mBuf.get());
                      }
                  }
                  while(count != -1);
                  
                  
                  System.out.println();
                  
                  
              }
              catch(IOException e)
              {
                  
                  System.out.println("I/O Error: " +e);
              }

    Как указать кодировку?
    Сообщение отредактировано: Kamenev_D -
      используй InputStreamReader указав нужный чарсет
        Цитата d_k @
        используй InputStreamReader указав нужный чарсет

        Интересует именно как в данном коде сделать.

        Добавлено
        В общем решил так, может кому пригодиться:
        ExpandedWrap disabled
          import java.nio.charset.Charset;
           
              try(SeekableByteChannel fChan = Files.newByteChannel(Paths.get("C:\\log")))
                      {
              
              
                          ByteBuffer mBuf = ByteBuffer.allocate(512);
                          
                          String encoding = System.getProperty("file.encoding");
              
                          do
                          {
                              count = fChan.read(mBuf);
              
              
                              if(count != -1)
                              {
              
                                  mBuf.rewind();
              
              
                                  for(int i= 0; i < count; i++) System.out.print(Charset.forName(encoding).decode(mBuf));
                              }
                          }
                          while(count != -1);
              
              
                          System.out.println();
              
              
                      }
                      catch(IOException e)
                      {
              
                          System.out.println("I/O Error: " +e);
                      }
          привет всем, похожая проблема, дабы не создавать новую тему спрошу здесь

          Читаю из консоли вывод запущенной консольной программы

          ExpandedWrap disabled
            //здесь запуск идет
            p = r.exec("...");
            //...
             
            // читаю вывод консоли
            InputStream out = p.getInputStream();
            InputStreamReader isr = new InputStreamReader(out, "UTF-8");
            BufferedReader br = new BufferedReader(isr);
             
            //
            String strRead = null;
             while ( (strRead = br.readLine()) != null  ) {
                        System.out.println( strRead  );
                        
             }


          Выводятся кракозябры, пробовал разные другие методы, но также не помогает, укажите на ошибку
            Какая ОС? В Linux всё по умолчанию в UTF-8, должно было бы работать. В Windows гораздо запутаннее.
            Ошибка может быть в несовпадении кодировок как читаемого потока с заданной в конструкторе InputStreamReader, так и выдаваемого Java-программой вывода с кодировкой терминала.

            Убедиться, верно ли Вы читаете входящий поток, можно, попутно записывая строки в файл с заданной кодировкой.

            Второе является головной болью для подавляющего большинства консольных программ в винде: терминал по умолчанию настроен на кодировку DOS (CP866), а программы выводят в CP1251 или UTF-8. По умолчанию -- CP1251, скорее всего (Почему не Unicode). Как перенастроить терминал -- не подскажу, а временно изменить кодировку в программе можно так:
            ExpandedWrap disabled
              System.setOut(new java.io.PrintStream(System.out, true, "Cp866"));
            -- понятно, с потерей переносимости. Как сделать гибче -- читайте тут.
              Win 8.1
              CHCP
              Текущая кодовая страница: 866

              ExpandedWrap disabled
                InputStream out = p.getInputStream();
                InputStreamReader isr = new InputStreamReader(out, "Cp866");
                BufferedReader br = new BufferedReader(isr);
                String strRead  = null;    
                while ( (strRead  = br.readLine()) != null  ) {
                    System.out.println(strRead );
                }


              Вот так заработало! Спасибо kopilov
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0713 ]   [ 15 queries used ]   [ Generated: 20.04.24, 03:24 GMT ]