При запуске java файла в sumblime и win cmd разная кодировка
Имеется файл txt, который я считываю и вывожу на экран. Если он в ansi кодировке по умолчанию, cmd выводит русский текст корректно, а sublime text 3 кракозябры. Sumblime настраивал так [RunJava.sublime-build]
{
"shell_cmd": "javac $file && java $file_base_name"
}
Если файл сохраняю в UTF-8, sumblime выводит корректно, а cmd напротив кракозябры.
Где поглубже разобраться с этим всем? И как в данном случае решить наскоро проблему - чтобы и там,и там текст выводился корректно? Когда код java с русскими String литералами я выводил в cmd, мне помогали ключи -encoding utf8, но если речь заходит о utf8 файле, то не прокатывает.
Скрины прилагаются

Ответы (2 шт):
Для sumblime
"Preferences -> User-Settings"
{
"color_scheme": "Packages/Color Scheme - Default/Mac Classic.tmTheme",
"fallback_encoding": "Cyrillic (Windows 1251)",
"font_size": 10,
"update_check": false
}
Для Java
Мне кажется, это ответ на твой вопрос
Клац
Если от себя, то вот как указать кодировку консоли
System.setOut(new PrintStream(System.out, true, "UTF-8"));
System.setErr(new PrintStream(System.err, true, "UTF-8"));
Явно указать кодировку, можно, например, в конструкторе InputStreamReader и в конструкторе OutputStreamWriter:
InputStreamReader(InputStream in, String charsetName)
OutputStreamWriter(OutputStream out, String charsetName)
Если хочешь создать строку
String str = new String (Массив байт,"UTF-8");
Если хочешь поменять кодировку файла
private final static int BUFFER_SIZE = 1000;
public static void swapEncode(String[] args) throws IOException
{
try (final FileInputStream fileInputStream = new FileInputStream(args[0]);
final InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "windows-1251");
final FileOutputStream fileOutputStream = new FileOutputStream(args[1]);
final OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8"))
{
final char[] buffer = new char[BUFFER_SIZE];
int readed;
while ((readed = inputStreamReader.read(buffer, 0, BUFFER_SIZE)) > 0)
outputStreamWriter.write(buffer, 0, readed);
}
}
Меню File -> Open with Encoding и выберите нужную кодировку.
Кроме того, смените настройку "show_encoding": false на "show_encoding": true и сможете видеть текущую кодировку файла в статусной строке саблайма.
