Выходной Unicode к консоли Используя C++, в Windows

Я все еще изучаю C++, поэтому терпите меня и мой неаккуратный код. Компилятором, который я использую, является C++ Dev. Я хочу смочь произвести символы Unicode в Консольный суд использования. Whenver я пробую вещи как:

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
    std::cout << "Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";
    system("PAUSE");
    return 0;
}

Это производит странные символы к консоли, как µA■Gg. Почему это делает это, и как я могу добраться до отобразить ĐĄßĞĝ? Или разве это не возможно с Windows?

23
задан einpoklum - reinstate Monica 8 March 2017 в 11:24
поделиться

3 ответа

А как насчет std :: wcout ?

#include <iostream>

int main() {
    std::wcout << L"Hello World!" << std::endl;
    return 0;
}

Это стандартный выходной поток для расширенных символов.

Тем не менее, как указал Адриан, это не касается того факта, что cmd по умолчанию не обрабатывает выходные данные Unicode. Это можно решить, настроив консоль вручную, как описано в ответе Адриана:

  • Запуск cmd с аргументом / u ;
  • Вызов chcp 65001 ], чтобы изменить формат вывода,
  • И установить шрифт Unicode в консоли (например, Unicode Lucida Console).

Вы также можете попробовать использовать _setmode (_fileno (stdout), _O_U16TEXT); , который требует fcntl.h и io.h (как описано в этот ответ и задокументировано в этом сообщении в блоге ).

15
ответ дан 29 November 2019 в 03:00
поделиться

Вы использовали выходной поток ANSI. Вам нужно использовать
std :: wcout << L "Бла-бла-бла какой-то бред unicode: ĐĄßĞĝ \ n";

Также используйте std :: cin.get (), а не system ("PAUSE")

1
ответ дан 29 November 2019 в 03:00
поделиться

Я не уверен, что Windows XP полностью поддерживает то, что вам нужно. Чтобы включить Unicode с помощью командной консоли, необходимо сделать три вещи:

  1. Запустить командное окно с помощью cmd / u . / u говорит, что ваши программы будут выводить Unicode.
  2. Используйте chcp 65001 , чтобы указать, что вы хотите использовать UTF-8 вместо одной из кодовых страниц.
  3. Выберите шрифт с большим охватом глифов. Командные окна в более новых версиях Windows предлагают Lucida Console Unicode . В моем приставке XP есть подмножество под названием Lucida Console . У него не очень обширный репертуар, но его должно быть достаточно, если вы просто пытаетесь отобразить некоторые символы с диакритическими знаками.
6
ответ дан 29 November 2019 в 03:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: