Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.04.2016
Сообщений: 1
1

Неправильно отображается германский умлаут при выводе текущей даты в германском формате

02.04.2016, 17:40. Показов 1077. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. Подскажите, пожалуйста в чем ошибка.
Мне (в целях саморазвития) необходимо, чтобы отображалась дата в немецком формате (месяц март обозначается по немецки с использованием умлаута ä), а также при работе программы могли отображаться кирилические символы, да и вообще символы любой другой страны или нескольких стран. Просто хочется научиться таким возможностям работы с символьными данными. Проблема состоит в том, что при использовании команды консоли chcp 850 не отображается кирилица (умлаут при этом отображается правильно), а при использовании кодовой страницы 866 или 1251 не отображается немецкий умлаут в названии месяца март (вся кирилица и латиница отображаются). После этого я доработал код по рекомендациям найденным в сети:
Java
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
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 пробовал, кирилица не отображается.Заранее благодарю за помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2016, 17:40
Ответы с готовыми решениями:

Добавление текущей даты к имени файла при нестандартном формате вывода даты
Приветствую ! Давно и успешно используется код, который мне когда-то подсказали тут на форуме ...

Получение даты и времени в формате текущей локализации
SimpleDateFormat LocaleDateFormat = new SimpleDateFormat(); В этом случае с русской локалью дата...

Создать подпапки с именем текущей даты в формате ГГГГ-ММ-ДД
Добрый день. Уважаемые гуру! Прошу помочь решить задачку. Есть конкретная папка на сетевом диске,...

На диске C создать директорию с именем в виде текущей даты в формате ДД-ММ-ГГГГ, а в ней — текстовый файл
Помогите создать командный файл! 1.Создать в текущем каталоге пользователя командный файл с именем...

1
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
02.04.2016, 19:42 2
я в код сильно не вникал, там происходит много для меня непонятного
поэтому взял и проверил вот так
Java
1
2
3
4
5
    public static void main(String[] args) throws ParseException {
        DateFormat ourDateFormat = DateFormat.getDateInstance(DateFormat.LONG, Locale.GERMAN);
        String dateGerman = ourDateFormat.format(new Date("2016/03/30"));
        System.out.println("Текст кирилицей " + dateGerman);
    }
Неправильно отображается германский умлаут при выводе текущей даты в германском формате
0
02.04.2016, 19:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2016, 19:42
Помогаю со студенческими работами здесь

Не отображается картинка при выводе из БД
Возможно проблема в пути: $uploaddir = $_SERVER . "/_uploads/content/"; тоесть путь на...

Кирилица отображается нормально при выводе из программы, но иероглифы при вводе в консоль
Что надо подключить что бы в консоли писать русскими буквами? cin >> kol; cin >> x; cout << "У...

Не отображается перенос строк при выводе из БД
Есть <textarea form="new-data" wrap="hard" name="desc" placeholder="Описание"...

Неправильно работает System.out.print при выводе Vector
Задание: имеется строка вида: Как видите, строка состоит из книг, разделенных знаком двоеточия...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru