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

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

Сообщение Anonymous »

Я видел другие сообщения, которые не дают четких ответов, основной ответ, который я вижу повсюду, — это либо _setmode, либо SetConsoleOutputCP, но они оба выглядят так, будто меняют настройку, которая не будет изменена позже, что меня не привлекает. Я думаю, что если что-то за пределами программы будет изменено, это следует изменить обратно, и я не могу понять, как это сделать, если оно по-прежнему является кроссплатформенным и не очень сложным для такой маленькой вещи. Хотя я могу быть тупым и сбитым с толку, возможно, это не какая-то постоянная вещь, которую вам нужно изменить самостоятельно, например «chcp 65001», и если вы хотите, чтобы ваш текст вернулся к исходному состоянию, прежде чем вам нужно будет запустить «chcp 850» (в моем случае), чтобы вернуть его к тексту по умолчанию.
Я использую C++ 14 (я очень новичок в C++, я в основном использую Python и я переключаю его), и всякий раз, когда я пытаюсь вывести символ Unicode 8 на консоль (я думаю, что это, по крайней мере, Unicode 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++»