При попытке вывести в c++ символы с кодами больше 127 выводится совсем непонятная строка - Вопросы по С+
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос При попытке вывести в c++ символы с кодами больше 127 выводится совсем непонятная строка

Регистрация
25 Июн 2013
Сообщения
77
Репутация
8
Спасибо
1
Монет
0
290863749_d9e707b4ae56902839ad746c9c39c8f9_240x240.png

290863749_1dfe6188887bd94561812eccb7e301e1_240x240.png

cout << "╔════╤════╤════╤════╤════╤════╤════╗";



Я программирую в Code Blocks и он выдаёт эту ошибку после того, как я нажимаю на Build and run но до того как появится консоль, и вместо нужных мне символов выводит странные наборы букв, причём если я буду записывать ═ как char(205) и ╤ как char(209) всё работает
 
Регистрация
24 Апр 2013
Сообщения
99
Репутация
0
Спасибо
0
Монет
0
На первом изображении показано предупреждение о том, что кодировка файла была изменена на UTF-8, чтобы избежать потери данных. Это обычное сообщение, которое появляется, когда в файле присутствуют символы, которые не могут быть представлены в текущей кодировке файла, и оно было изменено на UTF-8 для поддержки этих символов.

На втором изображении видно, что при попытке вывода символов в консоль выводится нечитаемая строка. Это происходит потому, что консоль Windows по умолчанию использует кодировку CP437 или CP850, в зависимости от языковых настроек, и эти кодировки не поддерживают вывод символов с кодами больше 127, которые присутствуют в кодировке UTF-8.

Когда вы пытаетесь вывести символы, используя `cout << "╔════╤════╤════╤════╤════╤════╤════╗";`, вам нужно убедиться, что консоль установлена на использование кодировки, которая поддерживает эти символы, например UTF-8. Однако стандартная консоль Windows (cmd.exe) может некорректно отображать UTF-8 символы, даже если вы измените кодировку с помощью команды `chcp 65001`.

В качестве решения вы можете использовать символы ASCII, которые похожи на желаемые графические символы, или изменить шрифт консоли на шрифт, который поддерживает эти символы. Также вы можете использовать функции WinAPI для установки нужной кодировки и шрифта консоли.

Для вывода символов с кодами больше 127, как вы уже заметили, вы можете использовать их числовые значения с функцией `char()`. Это работает потому, что `char(205)` и `char(209)` ссылается на символы в кодировке, которую консоль поддерживает по умолчанию.
 
Регистрация
7 Дек 2013
Сообщения
80
Репутация
-9
Спасибо
0
Монет
0
символы которые ты рисуешь в коде имеют определенный код(число). Один и тот же код в разных кодировках может означать разное... значит кодировка в консоли не совпадает с твоим документом
 
Регистрация
5 Дек 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
Это озночает ошыбка
 
Регистрация
3 Ноя 2012
Сообщения
101
Репутация
0
Спасибо
0
Монет
0
Если ты используешь однобайтную кодировку, то в Windows для кириллицы в GUI по умолчанию используется кодировка CP1251, а в консоли CP866 (MS-DOS). И в этих кодировках русские буквы имеют совершенно разные коды.

При написании консольных программ либо редактор настраивают на кодировку консоли, либо в первых строчках кода программы вызывают функции, переключающие консоль на колировку, используемую в редакторе. Об этом в интернете много где написано - достаточно ввести запрос в Google.

UTF-8 - многобайтная колировка, позволяющая использовать любые символы Unicode. Она прекрасно работает в Linux, но в Windows это отдельный геморрой.
 
Сверху Снизу