кириллица в Windows Console (java) System.out.println ();

Когда я пишу какой-то кириллический текст, System.out.println («Русский язык») – тогда он выйдет из этого ╨єёёъшщ ч√ъ, используя консоль Windows, как это можно исправить?, Кодировка файла – utf-8, но это не имеет значения, когда он был ansii или windows-1251, он выводил то же самое.

import java.io.PrintStream; class Kyrill { public static void main(String args[]) throws java.io.UnsupportedEncodingException { String ru = "Русский язык"; PrintStream ps = new PrintStream(System.out, true, "UTF-8"); System.out.println(ru.length()); System.out.println(ru); ps.println(ru); } } D:\Temp :: chcp 65001 Aktive Codepage: 65001. D:\Temp :: javac -encoding utf-8 Kyrill.java && java Kyrill 12 ??????? ???? Русский языкй язык 

Обратите внимание, что на выходе вы можете увидеть некоторый конечный мусор, но если вы перенаправите вывод в файл, вы увидите, что это всего лишь артефакт отображения.

Поэтому вы можете заставить его работать с помощью PrintStream . System.out использует платформенную кодировку (cp1252 для меня) и не имеет кириллических символов.

Дополнительное примечание для вас:

 D:\Temp :: chcp 1251 Aktive Codepage: 1251. :: This is another codepage (8 bits only) that maps bytes to cyrillic characters. :: Edit the source file to have: :: PrintStream ps = new PrintStream(System.out, true, "Windows-1251"); :: We intend to match the console output; else we won't get the expected result. D:\Temp :: javac -encoding utf-8 Kyrill.java && java Kyrill 12 ??????? ???? Русский язык 

Таким образом, вы можете видеть, что, вопреки тому, что некоторые люди считают, консоль Windows делает grok Unicode в случайном смысле, что он может печатать греческий и русский.

Хотя вы можете переключить консоль Windows на UTF-8 с помощью chcp 65001, вы все равно не сможете правильно просматривать вывод UTF-8. Это может быть не то, что вы хотите, но это по крайней мере выбор: перенаправить свой стандартный вывод в файл. Сохраните исходный файл как UTF-8 и скомпилируйте его с использованием кодировки UTF-8. Перенаправленный выходной файл можно просмотреть с помощью текстового редактора, поддерживающего UTF-8.

 String s = "Русский язык"; System.setOut(new PrintStream(new FileOutputStream("out.txt"), true, "UTF-8")); System.out.println(s); 

Консоль Windows использует кодировку CP866 для кириллицы по историческим причинам (помните DOS?). Консоль Windows определенно не поддерживает Unicode.

(Увы, у меня нет машины Windows, чтобы предоставить проверенный fragment кода.)

  • установка UTF-8 в java и csv-файле
  • Кодировать строку в UTF-8
  • Классический ASP - Как преобразовать строку UTF-8 в UCS-2?
  • Сила кодируется из US-ASCII в UTF-8 (iconv)
  • Объект Java BufferedWriter с utf-8
  • В чем разница между UTF-8 и UTF-8 без спецификации?
  • C # Преобразование строки из UTF-8 в ISO-8859-1 (Latin1) H
  • Сколько символов можно сопоставить с Unicode?
  • Установите языковой стандарт для системы по умолчанию UTF-8
  • Юникод в формате PDF
  • Изменение ANSI по умолчанию в UTF-8 в Блокноте
  • Давайте будем гением компьютера.