Знаки вопроса в консоли windows

Перейти к содержимому

Заметил на одном компьютере что вместо русских букв в командной строке да и в некоторых программах отображаются знаки вопроса.

В первую очередь необходимо убедиться, что языком системы выбран русский язык, для этого в «Пуск» — «Панель управления» — «Часы, язык и регион» — «Язык и региональные стандарты«, вкладка «Дополнительно«, раздел «Язык программ, не поддерживающих Юникод» необходимо нажать «Изменить язык системы» и выбрать «Русский (Россия)» и нажать «ОК» во всех окнах.

Также для решения проблемы откроем редактор реестра набрав в командной строке «regedit.exe«.
Командную строку можно открыть нажав по ярлыку в меню «Пуск» — «Все программы» — «Страндартные» — «Коммандная строка» или набрав «cmd» в поисковой строке меню «Пуск«.

В редакторе реестра необходимо открыть ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
и изменить значения параметров 1250c_1250.nls на c_1251.nls), 1251 (убедится что c_1251.nls), 1252c_1252.nls на c_1251.nls).

Все, после перезагрузки компьютера русские буквы будут отображаться корректно.

Я сам столкнулся с этой проблемой, искал решение пипец как долго. Тебе надо зайти в Region cправа надпись «additional date, time…» как на скрине, только у меня все на инглише у тебя все должно быть всё по-русски. Потом «administrative»/ «change system locate», и смени на русский. Короче, просто следуй скринам
введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

ответ дан 19 мар 2021 в 16:53

Yefimchuk's user avatar

2

Я приведу пример для Win10, для других систем аналогично, только названия пунктов будут другие.

Пуск/Параметры/Время и язык(распознавание голоса, регион, дата)/Регион/Дополнительные параметры даты, времени, региона/Региональные стандарты/Дополнительно/Текущий язык программ, не поддерживающий Юникод — Изменить язык системы

И тут Английский(США) поменять на Русский(Россия)
Экспериментальную галочку напротив Юникода ставить не нужно. У меня были проблемы связанные как раз с этой галочкой. Нужно было найти ее и отключить.

Если не поможет, нашел вариант с редактированием реестра, но у меня до этого не дошло.

Из проблем остались вопросики там где должны выводиться денежные знаки для текущего региона, пока не победил. Код на C# для проверки

Console.WriteLine(«C format: {0:C}», 2.50); // Валюта

Картинка что где жать

ответ дан 29 окт 2020 в 11:29

Shaitanama's user avatar

1

Win 10
У меня тоже были знаки вопроса в консоли. Мне как раз помогло переключение даного параметра на Английский(США)

Пуск/Параметры/Время и язык(распознавание голоса, регион, дата)/Регион/Дополнительные параметры даты, времени, региона/Региональные стандарты/Дополнительно/Текущий язык программ, не поддерживающий Юникод — Изменить язык системы(с русского на английский)

И вместо абракадабры появились нормальные слова =)

ответ дан 17 сен 2021 в 7:17

Игорь Вишняков's user avatar

3




Michael Butlitsky

Учитель

18:23:41, 28 апреля 2015

[M]

Зайдите в свойства командной строки: клик по иконке окна командной строки в левом верхнем углу, затем в выпавшем меню кликнуть Свойства.

В окне свойств выберите вкладку Шрифт и из списка шрифтов выберите Lucida Console, нажмите Ок.

В этом же окне вы можете подобрать удобный вам размер шрифта командной строки.


  • Screenshot_2015-04-28_18.23.00.png

    Окно свойств командной строки Windows

Это практически первый вопрос, которым задаются юниоры С++, когда пытаются запустить свою первую консольную программу под виндой.
Ответов на него тут уже была целая пачка.

Суть в том, что в виндовой консоли может быть 2 русские кодировки (cp866 и cp1251) (не уверен, но может быть консоль винды научилась уже нормально работать с UTF8, если научилась, то считайте, что добавилась еще одна кодировка). Причем по умолчанию используется cp866. Кодировку консоли можно менять из самой консоли или программно.
При выводе текста в консоль никаких преобразований кодировок не происходит. В какой кодировке у вас написаны исходники — та и выводится. И если кодировка консоли и кодировка исходников не совпадают, то будет не читабельный текст.

Самый оптимальный и самый сложный вариант — в программе узнать кодировку консоли и перед выводом конвертировать текст в эту кодировку. Так же обратную операцию производить при вводе. В этом случае исходники программы лучше всего писать в UTF8 и использовать wchar_t.

Самый простой, дебильный и не всегда работающий (не будет работать если изменена кодировка консоли) — писать исходники в cp866.
Немного чуть более сложный, но не правильный — поменять кодировку консоли из программы на ту в которой написаны исходники.

Самый надежный вариант — не используйте русский в консольных программах — только английский. Сомневаюсь, что вам придется когда-то писать профессиональные консольные утилиты, которые бы умели адаптироваться к разным кодировкам, так что, возможно, нет смысла углубляться в эту тему. В GUI приложениях этой проблемы нет.

Проблема: в англоязычной версии Windows даже с установленным русским языком не отображаются кириллические символы, вместо них печатаются знаки вопроса ???

Решение:

Выполнить следующую команду

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8

Данное решение, как справедливо было замечено, будет работать только до перезапуска консоли.

Решение 2

В этом решении будет рассказано как решить этот вопрос глобально.

Win + R -> Intl.cpl -> OK

На вкладке «Дополнительно»(«Administrative») Измените язык для программ, не поддерживающих Юникод — выберите Русский (Russian)

Перезагрузите систему

  • Значок мой компьютер в windows 10 на рабочий стол скачать
  • Значок сетевого подключения с крестиком но сеть есть windows 7
  • Знак бесконечности на клавиатуре windows
  • Значок пуск windows 10 для classic shell
  • Знак языка на панели задач windows 10 как его вернуть