![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| libertas |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 10.3.2014 Репутация: нет Всего: нет |
Всем привет.
Подскажите, пожалуйста, почему так работает код:
Если выводить это через Intellij IDEA то выводится так: System.out puts: Это строка с русским текстом PrintWriter puts: �� ��ப� � ���᪨� ⥪�⮬ Если использовать консоль, то иероглифы и там и там? Почему так и почему по-разному? Дальше посимвольный ввод:
через Intellij IDEA если ввести русскую букву, то а � -> 9576 � -> 9617 -> 10 а английскую: f -> 102 -> 10 Почему для русского варианта выводится 2 строки, а для русского одна? При этом в консоли: f -> 102 -> 13 -> 10 а а -> 1072 -> 13 -> 10 Почему есть разница в выводе в консоли и intellij idea? И ещё в intellij idea если нажимать <Ctrl>+<Z> программа не прерывается. Спасибо. |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
System.out это стандартный поток вывода, в общем случае это бинарный поток, но многие программы трактуют его как символьный вопрос только насчет кодировки символов. IDEA ставит умолчальной кодировкой UTF-8 и ожидает что текст в консоль будет писаться в UTF-8 а не 866, потому стандартный PrintWriter который ассоциирован с System.out работает нормально.
Что касается консоли Windows, то сама консоль работает в 866 кодировке, и вобще говоря OutputStreamWriter с Cp866 должен отрабатывать нормально, если только ты руками кодировку в консоли не менял. А стандартный PrintWriter который ассоциирован с System.out работает в умолчальной кодировке системы, которая 1251, потому там кракозябры. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| libertas |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 10.3.2014 Репутация: нет Всего: нет |
Спасибо. PrintWriter пишет в UTF-8 или 1251? не очень понял этот момент. А в консоли у меня для кода
System.out puts: ╨н╤В╨╛ ╤Б╤В╤А╨╛╨║╨░ ╤Б ╤А╤Г╤Б╤Б╨║╨╕╨╝ ╤В╨╡╨║╤Б╤В╨╛╨╝ PrintWriter puts: Р?С?Р? С?С?С?Р?РєР° С? С?С?С?С?РєРёР? С?Р?РєС?С?Р?Р? Я не менял кодировку. И почему для символьного ввода для русских и английских букв выводится разное количество строк для одного кода:
|
||||||||
|
|||||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Смотря какой. Тот который по умолчанию стоит в System.out пишет в умолчальной кодировке: при запуске из консоли это будет 1251, при запуске из IDEA будет UTF-8. Если ты сам создаешь PrintWriter то ты и задаешь для него кодировку. Запиши строку в файл в некой кодировке (например 1251). Возможно у тебя неправильная кодировка при компиляции. Т.е. файл в UTF-8, а компилятор работает с умолчальной системной. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| libertas |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 10.3.2014 Репутация: нет Всего: нет |
Ок, спасибо большое. Буду эксперементировать.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |