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

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

290863749_1dfe6188887bd94561812eccb7e301e1_240x240.png

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



Я программирую в Code Blocks и он выдаёт эту ошибку после того, как я нажимаю на Build and run но до того как появится консоль, и вместо нужных мне символов выводит странные наборы букв, причём если я буду записывать ═ как char(205) и ╤ как char(209) всё работает
 
На первом изображении показано предупреждение о том, что кодировка файла была изменена на 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)` ссылается на символы в кодировке, которую консоль поддерживает по умолчанию.
 
символы которые ты рисуешь в коде имеют определенный код(число). Один и тот же код в разных кодировках может означать разное... значит кодировка в консоли не совпадает с твоим документом
 
Это озночает ошыбка
 
Если ты используешь однобайтную кодировку, то в Windows для кириллицы в GUI по умолчанию используется кодировка CP1251, а в консоли CP866 (MS-DOS). И в этих кодировках русские буквы имеют совершенно разные коды.

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

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