вывод в лог русские буквы

Хочу проверить правильность заполнения из проперти и вывожу в лог. Но там абракадабра непонятная. И не понятно: проблема в кодировке или нужно локализацию делать? в с++ легко делается, но про java не нашел в интернете. Пользуюсь IntelliJ IDEA

Вывод лога


Ответы (1 шт):

Автор решения: Pak Uula

Вы, наверное, работаете в Windows? Там главная причина вывода нерусских букв заключается в OEM кодировке системы, под которую подстраиваются и java, и консоль.

Во-первых, есть кодировка по умолчанию, которой пользуется Java для ввода-вывода. Она задаётся при старте в свойстве file.encoding и доступна для чтения как Charset.defaultCharset(). В Windows эта кодировка устанавливается в OEM codepage.

Проверить можно вот такой маленькой программой:

import java.nio.charset.Charset;

class Main {
        public static void main(String[] args) {
                System.out.println(Charset.defaultCharset());
        }
}

Во-вторых, есть ещё кодировка символов в консоли. Консоль линукса, как правило, выводит в UTF-8, но консоль Windows выводит в кодировке текущей локали (OEM codepage).

Посмотрите в свойствах консоли, какая страница установлена у вас.

Кодировка консоли меняется командой chcp. Кодовая страница UTF-8 - 65001

Попробуйте:

chcp 65001
java "-Dfile.encoding=utf-8" YourMainClass

(если в шрифте консоли нет кириллических символов, вместо них будут выводиться серые квадратики)

→ Ссылка