Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Кодировка при выводе в консоль / 11 сообщений из 11, страница 1 из 1
26.05.2016, 08:44
    #39243627
mihmih
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
Поначалу радовался, когда System.out.println корректно выводил в консоль кириллицу (кодировка проекта в eclipse UTF-8)
вот мол, смотрите Java в отличие других языков корректно определяет кодировку консоли.
Но внезапно стали отображаться "кракозябры":
╨єёёъшщ ЄхъёЄ

В чём может быть дело?

java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
...
Рейтинг: 0 / 0
26.05.2016, 08:54
    #39243638
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
mihmihПоначалу радовался, когда System.out.println корректно выводил в консоль кириллицу (кодировка проекта в eclipse UTF-8)
вот мол, смотрите Java в отличие других языков корректно определяет кодировку консоли.
Но внезапно стали отображаться "кракозябры":
╨єёёъшщ ЄхъёЄ

В чём может быть дело?

java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

Ну так значит консоль у Вас поменяла локализацию...
Если Вы в линуксе или маке проверить легко
echo $LANG
Ответ типа
ru_RU.UTF-8

В винде не знаю.
...
Рейтинг: 0 / 0
26.05.2016, 10:00
    #39243696
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
WindowsF:\>chcp
Текущая кодовая страница: 866
...
Рейтинг: 0 / 0
26.05.2016, 10:06
    #39243706
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
chcp 1251
chcp 65001 (это UTF-8)
...
Рейтинг: 0 / 0
26.05.2016, 10:07
    #39243708
lleming
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
mihmihПоначалу радовался, когда System.out.println корректно выводил в консоль кириллицу (кодировка проекта в eclipse UTF-8)
вот мол, смотрите Java в отличие других языков корректно определяет кодировку консоли.
Но внезапно стали отображаться "кракозябры":
╨єёёъшщ ЄхъёЄ

В чём может быть дело?

java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)


можно покорежить String в самой Java считав неправильно из потока и уже испорченные строки в консоль выводить.
...
Рейтинг: 0 / 0
26.05.2016, 10:08
    #39243711
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
mihmih,
Код: powershell
1.
java -Dfile.encoding=UTF-8 bla bla bla
...
Рейтинг: 0 / 0
26.05.2016, 16:00
    #39244193
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@echo on
setlocal
rem Supported limited set of code pages
rem Has side effects
rem No need for IBM J9
set _CP=
for /f "tokens=2 delims=:" %%A in ('chcp') do set _CP=%%A
for %%A in (%_CP%) do set _CP=%%A
java  -Dfile.encoding=CP%_CP%  another arguments
chcp %_CP%>nul
endlocal
...
Рейтинг: 0 / 0
26.05.2016, 16:25
    #39244223
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
В Windows CMD по умолчанию стоит cp866 кодировка
...
Рейтинг: 0 / 0
26.05.2016, 19:22
    #39244324
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
Умолчания, они на то и умолчания, чтобы иногда их не использовать. А иногда они ещё и разные.
Cp866 это OEM-кодировка, а некоторые вещи (тот же System.out.println) используют (в Sun/Oracle JVM) используют file.encoding, а это (опять-таки, по умолчанию) ANSI-кодировка, т.е. Cp1251.
И когда встречаются два умолчания - получаем зюгрики в виндовой консоли.
Есть два способа:
1. Установить кодировку консоли равной значению свойства file.encoding;
2. Установить значение свойства file.encoding равным кодировке консоли.
Ни один из вариантов не является универсальным и "всегда работающим".

P.S. И это я ещё не обсуждаю "отдельно раскиданные грабли".

P.P.S. IBM J9 использует и устанавливает дополнительное свойство console.encoding, HotSpot так не умеет.
...
Рейтинг: 0 / 0
27.05.2016, 14:25
    #39244913
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
Basil A. SidorovP.S. И это я ещё не обсуждаю "отдельно раскиданные грабли".
Например, в виде опять же умолчательных шрифтов консоли, которые способны отображать исключительно OEM.
...
Рейтинг: 0 / 0
27.05.2016, 21:50
    #39245328
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кодировка при выводе в консоль
Патологических лентяев, для которых "... всё сделала по умному" я тоже не хочу обсуждать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Кодировка при выводе в консоль / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]