Unicode 8 выводит странные результаты на C++ [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Unicode 8 выводит странные результаты на C++ [дубликат]

Сообщение Anonymous »

Я видел другие сообщения, которые не дают четких ответов, основной ответ, который я вижу повсюду, — это либо _setmode, либо SetConsoleOutputCP, но они оба выглядят так, будто меняют настройку, которая не будет изменена позже, что меня не привлекает. Я думаю, что если что-то за пределами программы будет изменено, это следует изменить обратно, и я не могу понять, как это сделать, если оно по-прежнему является кроссплатформенным и не очень сложным для такой маленькой вещи. Хотя я могу быть тупым и сбитым с толку, может быть, это не какая-то постоянная вещь, которую вам нужно изменить самостоятельно, например «chcp 65001», и если вы хотите, чтобы ваш текст вернулся к исходному состоянию, прежде чем вам нужно будет запустить «chcp 850» (в моем случае), чтобы вернуть его к тексту по умолчанию...
Я использую C++14 (я очень новичок в C++, я в основном использую Python и я переключаю его), и всякий раз, когда я попробуйте вывести на консоль символ Юникода 8 (по крайней мере, я думаю, что это Юникод 8), в моем случае это "▀", вместо получения этого символа я получаю "ÔûÇ", все это исправляется, когда я меняю "Активную кодовую страницу" для моей консоли на 65001, но это немного странно, что всем, кто запускает программу, также необходимо изменить свою "Активную кодовую страницу", и даже если они это сделают, они, вероятно, захотят изменить ее обратно, потому что иногда перед его изменением оно другое (в моем случае значение по умолчанию — 850).
Я пришел к странной вещи: если я получаю ввод от пользователя с помощью cin, устанавливаю переменную для ввода, а затем заставляю пользователя вводить «▀», то всякий раз, когда я вывожу ввод пользователя на консоль, это действительно работает! После некоторого копания я обнаружил, что для переменной установлено значение «\xdf», поэтому вместо того, чтобы каждый раз получать входные данные, я мог просто выводить «\xdf» на консоль, и «▀» появлялось правильно. Но потом я понял, что всё наоборот, на этот раз, если бы для «Активной кодовой страницы» было установлено значение 65001 (что было решением раньше), теперь это НЕ БУДЕТ работать, теперь там ничего не появится, и на этот раз это было ИСПРАВЛЕНО, когда я использовал 850 (что было проблемой раньше)
Я просто не привык к такого рода вещам при программировании на Python...
Я действительно хочу все это быть кроссплатформенным и работать со всеми терминалами :(
ИЗВИНИТЕ ЗА МОЙ ГЛУБОКИЙ ВОПРОС!!!

Подробнее здесь: https://stackoverflow.com/questions/798 ... weird-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»