Setconsolecp 1251 setconsoleoutputcp 1251 что это
Перейти к содержимому

Setconsolecp 1251 setconsoleoutputcp 1251 что это

  • автор:

Функция SetConsoleOutputCP

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

Синтаксис

BOOL WINAPI SetConsoleOutputCP( _In_ UINT wCodePageID ); 

Параметры

wCodePageID [in]
Идентификатор заданной кодовой страницы. Дополнительные сведения см. в подразделе «Примечания».

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Замечания

Кодовая страница сопоставляет 256 кодов символов с отдельными символами. Разные кодовые страницы включают разные специальные символы, как правило, настроенные для языка или группы языков.

Если текущий шрифт является шрифтом Юникода фиксированного поля, SetConsoleOutputCP изменяет сопоставление значений символов в набор глифов шрифта, а не загружает отдельный шрифт при каждом вызове. Это влияет на то, как расширенные символы (значение ASCII больше 127) отображаются в окне консоли. Однако если текущий шрифт является растровым шрифтом, SetConsoleOutputCP не влияет на отображение расширенных символов.

Чтобы найти кодовые страницы, установленные или поддерживаемые операционной системой, используйте функцию EnumSystemCodePages . Идентификаторы кодовых страниц, доступных на локальном компьютере, также хранятся в реестре в следующем разделе:

Однако лучше использовать EnumSystemCodePages для перечисления кодовых страниц, так как реестр может отличаться в разных версиях Windows. Чтобы определить, является ли определенная кодовая страница допустимой, используйте функцию IsValidCodePage . Чтобы получить дополнительные сведения о кодовой странице, включая его имя, используйте функцию GetCPInfoEx . Список доступных идентификаторов кодовой страницы см. в разделе «Идентификаторы кодовой страницы».

Requirements

Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхний колонтитул ConsoleApi2.h (через WinCon.h, включая Windows.h)
Библиотека Kernel32.lib
DLL-библиотеки Kernel32.dll

Не работает SetConsoleOutputCP и SetConsoleCP

Здравствуйте. В прошлом году взялся за изучение C++. Для этого дела использовал Microsoft Visual Studio Express. После новогодних праздников решил продолжить изучение языка (за это время успел переустановить ОС). По быстрому поставил себе компилятор g++ и IDE Geany. Для проверки корректной работы моих новых инструментов, решил набрать простую программу.

#include ; #include ; #include ; using namespace std; int main()

img

И на тебе, кириллица в консоле не вывелась: В Visual Studio всё работало. В чём проблема?

Отслеживать
371 1 1 золотой знак 5 5 серебряных знаков 13 13 бронзовых знаков
задан 2 янв 2013 в 16:02
MrILLUMINOR MrILLUMINOR
71 2 2 золотых знака 5 5 серебряных знаков 10 10 бронзовых знаков

Клюцни правой кнопкой на консоль-> заходиш в свойства->вкладку шрифт ->и меняеш ево на Сonsolas либо на иной другой.

20 апр 2018 в 21:10
блин немного не успел
20 апр 2018 в 21:12
Что вы не успели? А что такое — «клюцни»?
20 апр 2018 в 21:31

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Вместо редактировать нажал удалить, сорри.

  • Не компилируется — SetConsole* MS функции не обязательно будут поддерживаться другим компилятором.
  • Если эти функции имеются в библиотеке идущей с компилятором, не обязательно будут обеспечивать то же поведение программы.

Вообще эти два варианта справедливы для любых не входящих в стандарт функций.

  • SetConsole* воздействует только на Unicode шрифты, поэтому необходимо задать в консоли для отображению именно такой шрифт (обычно Lucida Console)

Отслеживать
ответ дан 2 янв 2013 в 17:04
5,849 1 1 золотой знак 21 21 серебряный знак 29 29 бронзовых знаков

IMHO gcc/g++ не используют в своих библиотеках аналоги функций MS, а вызывают их непосредственно из системных библиотек. Поскольку программа слинковалась (и отработала), то варианты 1 и 2 можно сразу отбросить. — Ответ про шрифт правильный. — В русской семерке есть (по крайней мере у меня) еще один «глюк». После установки надо войти в «панель управления»->»язык и региональные стандарты»->»дополнительно» и в пункте «текущий язык программ, не поддерживающих Юникод» 2 раза изменить язык. Первый раз на любой, потом перезагрузиться и заменить на русский. Потом работает.

3 янв 2013 в 16:37

если программа слинковалась — не позволяет отбросить пункт 2, и там «унутре» может реализовываться очень разное поведение от вызова системных функций или собственной реализации, до например какого-либо макроса. Я занудничаю, потому что не люблю такие функции и обычно не рекомендую их использовать.

3 янв 2013 в 17:27

@Mirdin, а Вы просто посмотрите в /MinGW/include wincon.h:183:BOOL WINAPI SetConsoleOutputCP(UINT); и все станет более понятно.

3 янв 2013 в 18:13

@avp я ими не пользовался фиг знает сколько времени, и сомнительно что воспользуюсь в ближайшем будущем. Понадобиться — посмотрю, а так.

Setconsolecp 1251 setconsoleoutputcp 1251 что это

Функция SetConsoleCP устанавливает кодовую страницу ввода, используемую консолью, связанной с вызывающим процессом. Консоль использует свою кодовую страницу ввода, чтобы преобразовывать ввод информации с клавиатуры в соответствующие символьные значения.

BOOL SetConsoleCP(

UINT wCodePageID // кодовая страница

);

[in] Идентификатор кодовой страницы, которая будет установлена. Идентификаторы кодовых страниц, доступных на локальном компьютере сохраняются в системном реестре под нижеследующим ключом.

Если функция завершается успешно, величина возвращаемого значения — не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения — ноль. Чтобы получать расширенные данные об ошибках, вызовите функцию GetLastError .

Кодовая страница преобразовывает данные 256 символьных кодов в отдельные символы. Разные кодовые страницы включают в себя разные специальные символы, обычно настраиваемые для языка или группы языков.

Чтобы выяснять текущую кодовую страницу ввода консоли, используйте функцию GetConsoleCP . Чтобы установить и получить кодовую страницу вывода данных консоли, используйте функции SetConsoleOutputCP и GetConsoleOutputCP .

Setconsolecp 1251 setconsoleoutputcp 1251 что это

Функция SetConsoleOutputCP устанавливает кодовую страницу вывода данных, используемую консолью, связанной с вызывающим процессом. Консоль использует свою кодовую страницу вывода данных, чтобы преобразовать символьные значения, написанные различными функциями вывода информации в изображение, показываемое на экране в консольном окне.

BOOL SetConsoleOutputCP(

UINT wCodePageID // кодовая страница

);

[in] Идентификатор кодовой страницы, которая устанавливается. Идентификаторы кодовых страниц, доступных на локальном компьютере сохраняются в системном реестре под нижеследующим ключом.

Если функция завершается успешно, величина возвращаемого значения — не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения — ноль. Чтобы получать расширенные данные об ошибках, вызовите функцию GetLastError .

Кодовая страница преобразует 256 кодов букв в индивидуальные символы. Разные кодовые страницы включают в себя разные специальные символы, обычно настраиваемые для языка или группы языков. Если текущий шрифт — моноширинный шрифт Уникода, функция SetConsoleOutputCP изменяет начертание символьных значений в установку глифов шрифта, а не загружает отдельный шрифт каждый раз, когда он вызывается. Это влияет на образ расширенных символов (значение ASCII больше, чем 127), которые отображаются в консольном окне. Однако, если текущий шрифт является растровым шрифтом, SetConsoleOutputCP не влияет на то, как расширенные символы отображаются.

Чтобы выяснить текущую кодовую страницу вывода данных консоли, используйте функцию GetConsoleOutputCP . Чтобы установить и извлечь кодовую страницу ввода консоли, используйте функции SetConsoleCP и GetConsoleCP .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *