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

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Вывод умлаутов , Неправильно отображается германский умлаут при выводе текущей даты в германском формате
    Доброго времени суток. Подскажите, пожалуйста в чем ошибка.
    Мне (в целях саморазвития) необходимо, чтобы отображалась дата в немецком формате (месяц март обозначается по немецки с использованием умлаута ä), а также при работе программы могли отображаться кирилические символы, да и вообще символы любой другой страны или нескольких стран. Просто хочется научиться таким возможностям работы с символьными данными. Проблема состоит в том, что при использовании команды консоли chcp 850 не отображается кирилица (умлаут при этом отображается правильно), а при использовании кодовой страницы 866 или 1251 не отображается немецкий умлаут в названии месяца март (вся кирилица и латиница отображаются). После этого я доработал код по рекомендациям найденным в сети:
    ExpandedWrap disabled
      import java.util.*;
      import java.text.*;
      import java.io.*;
      public class RandomDate {
          public static void main(String[] args) {
              PrintStream onMonitorOut = null;
              PrintStream onMonitorErr = null;
              try {
                  if(System.getProperty("os.name").toLowerCase().contains("windows")) {
                      onMonitorOut = new PrintStream(System.out,true,"Cp850");
                      onMonitorErr = new PrintStream(System.err,true,"Cp850");
                      System.setOut(onMonitorOut);
                      System.setErr(onMonitorErr);
                      Date curentDate = new Date();
                      DateFormat ourDateFormat = DateFormat.getDateInstance(DateFormat.LONG,Locale.GERMAN);
                      String dateGerman = ourDateFormat.format(curentDate);
                      System.console().printf("%n\tТекущая дата (в Германском формате): ");
                      onMonitorOut.printf("%s%n",dateGerman);
                      System.console().printf("%n\t"+java.nio.charset.Charset.isSupported("Cp850")); // проверка поддержки кодовой страницы - поддерживается
                  }  
              }
              catch(Exception e) {
                  System.out.println(e+" - вот такая вот ошибочка");
              }
              finally {
                  if(onMonitorOut != null)
                      onMonitorOut.close();
                  if(onMonitorErr != null)
                      onMonitorErr.close();
              }
          }
      }

    Вот что получается при работе программы (кодовая страница 866):
    d:\Java\Kap07>java RandomDate

    Текущая дата (в Германском формате): 1. MДrz 2016

    true

    При переключении на другую русскоязычную кодовую страницу
    d:\Java\Kap07>chcp 1251
    Текущая кодовая страница: 1251

    d:\Java\Kap07>java RandomDate

    Текущая дата (в Германском формате): 1. M„rz 2016

    true
    При переключении на кодовую страницу 850, поддерживающую символы западной Европы (умлаут ä отображается правильно):
    d:\Java\Kap07>chcp 850
    Active code page: 850

    d:\Java\Kap07>java RandomDate

    ??????? ???? (? ?????????? ???????): 1. März 2016

    true
    d:\Java\Kap07>
    Подскажите, пожалуйста причину некорректного отображения символа или где можно об этом почитать. Запускать компилятор с опцией -encoding 850 пробовал, кирилица не отображается.Заранее благодарю за помощь.
      Цитата Пианист @
      Подскажите, пожалуйста причину некорректного отображения символа

      Причина очевидна: этого символа нет в кодовых страницах 866 и 1251.

      Цитата Пианист @
      Запускать компилятор с опцией -encoding 850 пробовал, кирилица не отображается.

      Естественно, ведь её нет в кодовой странице 850.

      Цитата Пианист @
      где можно об этом почитать

      В описании кодировок и кодовых страниц.

      Попробуй -encoding 65001 и new PrintStream(System.out, true, "UTF-8")
      Сообщение отредактировано: korvin -
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script execution time: 0,0309 ]   [ 16 queries used ]   [ Generated: 28.03.24, 21:01 GMT ]